gcc.c-torture/execute/20040709-1.c fails for -EL -mips16 -O3 with: 20040709-1.c:93: internal compiler error: in insert_save, at caller-save.c:745
This is due to the new subreg liveness checking. We have a bb with: A: call ... B: set of (subreg:HI (reg:SI foo)) ... C: use of (reg:SI foo) and no other references to (reg:SI foo) in the function. We allocate FOO a call-clobbered register, and wrongly think that it is still live at A. This is because global.c:build_insn_chain tracks the liveness of each byte of FOO separately, and wrongly thinks that the B leaves the upper two bytes live. (SUBREG lvalues clobber the whole word span, not just the byte span.) -- Summary: [4.3 Regression] gcc.c-torture/execute/20040709-1.c fails for -EL -mips16 -O3 Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rsandifo at gcc dot gnu dot org GCC target triplet: mipsisa64-elfoabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34998