Various parts of the compiler generate LABEL_REFS with VOIDmode instead of Pmode. This can cause some optimizations to be missed because two pieces of code might be identical, except for the mode of their LABEL_REFS - then they still compare as non-equal, e.g. for if-conversion or cross-jumping.
For targets that have varying Pmode settings and therefore use jump patterns that don't specify the mode so that they can match e.g. either SImode of DImode, the situation is more dire: when reload has to load the label into a register, it needs the mode of the label_ref to determine the load of the reload. VOIDmode in this place leads to an ICE, which is likely to prevent building the gcc support libraries. -- Summary: VOIDmode LABEL_REFs are generated Product: gcc Version: 3.2 Status: UNCONFIRMED Keywords: ice-on-valid-code, missed-optimization, build Severity: normal Priority: P2 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: amylaar at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org OtherBugsDependingO 17652 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20413