digitalmars.D.bugs - [Issue 12855] New: Shadow register assignments for spilling can
- via Digitalmars-d-bugs (26/26) Jun 04 2014 https://issues.dlang.org/show_bug.cgi?id=12855
https://issues.dlang.org/show_bug.cgi?id=12855 Issue ID: 12855 Summary: Shadow register assignments for spilling can conflict Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: major Priority: P1 Component: DMD Assignee: nobody puremagic.com Reporter: bugzilla digitalmars.com For the following piece of code, compiled for Win64 with -O and SFLexit added to __arrayZ: void test8651() { real[3] a = [11, 22, 33]; real[3] b = [1, 2, 3]; a[] += 4 + b[]; } it will generate: mov RDX,R8 mov R8,RDX as shadow reg R8 is assigned to RDX and vice versa. The code sequence generated, obviously, winds up trashing R8. --
Jun 04 2014