Bug 17215 – [Reg 2.073] ICE(cgcod.c:findreg) with SIMD and -O -inline
Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2017-02-21T02:14:00Z
Last change time
2017-08-07T13:15:18Z
Keywords
ice, pull
Assigned to
nobody
Creator
code
Comments
Comment #0 by code — 2017-02-21T02:14:57Z
cat > bug.d << CODE
alias vec = __vector(int[4]);
vec op(vec a)
{
return a;
}
vec binop(vec a)
{
return op(a);
}
CODE
dmd -c -O -inline bug
----
Internal error: backend/cgcod.c 1659 [¹]
----
Ends up calling findreg with an empty register mask. Seems like sth. in loaddata or so doesn't properly handle xmm registers.
Callstack:
----
0 in findreg of backend/cgcod.c:1659
1 in fixresult of backend/cod1.c:1802
2 in loaddata of backend/cod1.c:4769
3 in codelem of backend/cgcod.c:2669
4 in scodelem of backend/cgcod.c:2740
5 in cdeq of backend/cod4.c:646
6 in codelem of backend/cgcod.c:2619
7 in cdcomma of backend/cod2.c:2195
8 in codelem of backend/cgcod.c:2619
9 in cdcomma of backend/cod2.c:2194
10 in codelem of backend/cgcod.c:2619
----
[¹]: https://github.com/dlang/dmd/blob/65f2dfdddae822cf6bb483e82eac32839e142a72/src/backend/cgcod.c#L1659
Comment #1 by bugzilla — 2017-02-22T04:31:52Z
This is working for me on Windows 64. It's listed as "All" platforms. Which is it failing on?