www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17215] New: ICE(cgcod.c:findreg) with SIMD and -O -inline


          Issue ID: 17215
           Summary: ICE(cgcod.c:findreg) with SIMD and -O -inline
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: ice
          Severity: major
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: code dawg.eu

cat > bug.d << CODE
alias vec = __vector(int[4]);

vec op(vec a)
    return a;

vec binop(vec a)
    return op(a);
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.

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


Feb 20 2017