http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53120
Bug #: 53120 Summary: [4.5, 4.6, 4.7, 4.8 Regression]: ICE building driver, exposing strict_low_part / in/out operand thinko -fno-tree-sra Classification: Unclassified Product: gcc Version: 4.5.5 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: h...@gcc.gnu.org Target: cris-*-*, crisv32-*-* Created attachment 27240 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27240 ./cc1 -O2 -fno-tree-sra The attached test-case, intended for gcc.dg/torture, exposes a thinko in the CRIS port: a read/write output operand (the "+" constraint modifier) is specified to match an input operand ("0"). Reload cannot cope, and thinking about it, it's not possible (with the current hooks and macros). According to a comment in m68k.md, this is to be expected, supported by a gdb session. The m68k comment (grep MATCH_DUP m68k.md) is from revision 372 (!) which according to the (artificially mapped) svn revision numbers are about 10 revisions from the introduction of reload.c (!!). Patch in testing. The observation was from an import of the 4.7 branch; also confirmed on branches for 4.5, 4.6, 4.7 and trunk, but not for 4.3. The use of "+" was introduced with revision r134236 (2008-04-13 02:51:51 UTC), before the 4.4 branch. The bug is of course there but just not trigging for 4.4 but nevertheless observed as a regression of 4.5, therefore labelled as such. Note the requirement to turn off tree-sra.