[Issue 6189] [64bit] optimizer: register content destroyed in function prolog

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue May 22 11:15:58 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=6189


Leandro Lucarella <leandro.lucarella at sociomantic.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |leandro.lucarella at sociomant
                   |                            |ic.com


--- Comment #12 from Leandro Lucarella <leandro.lucarella at sociomantic.com> 2012-05-22 11:17:37 PDT ---
(In reply to comment #10)
> My reduction in comment 9 was valid only for D2, this one is valid for D1 as
> well (again compile with -m64 -O):
> ---------------------------
> struct IPoint {
>     int x, y;
> }
> 
> void bug6189(uint half, IPoint pos, float[4] *pts, uint unused) {
>     pos.y += half;
>     float xo = pos.x;
>     float yo = pos.y;
> 
>     (*pts)[0] = xo;
>     (*pts)[1] = yo;
>     (*pts)[2] = xo;
> }
> 
> void main()
> {
>     auto pos = IPoint(2, 2);
>     float[4] pts;
>     pts[0] = pts[1] = pts[2] = pts[3] = 0;
>     bug6189(0, pos, &pts, 0);
> 
>     assert(pts[0] == 2);
> }

OK, this one fails too in latest D1 and D2, but interestingly enough, it works
with -O -inline (in both D1 and D2)!

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list