[Issue 15206] ICE on optimized build, tym = x1d Internal error: backend\cgxmm.c 547

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Jan 10 00:26:28 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=15206

--- Comment #4 from briancschott at gmail.com ---
It seems that the problem is in the allocreg function called from loaddata.

I added some debugging printfs before and after calls to `allocreg` and I see
the following:

before: tym = 0x1d, forregs = 0x020000, reg =
BP|SI|DI|R10|R12|R15|XMM0|XMM1|XMM3|XMM4|XMM5|XMM6|XMM7|PSW|NOREG|RMload

after: tym = 0x1d, forregs = 0x020000, reg = AX|SP

It seems that the `forregs` variable (The `pretregs` parameter to allocreg) is
not getting modified properly. It still has the value 0x20000, which matches
the XMMREGS mask even though `allocreg` has correctly removed all the XMM
registers from the list of valid registers in the `reg` variable. Because this
`forregs` variable is not masked out by XMMREGS, there is a call to `xmmload`
even though `xmmload` doesn't support `tym` values of 0x1d.

--


More information about the Digitalmars-d-bugs mailing list