http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53854
Bug #: 53854 Summary: ICE in find_constant_pool_ref Classification: Unclassified Product: gcc Version: 4.7.1 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target AssignedTo: ja...@gcc.gnu.org ReportedBy: ja...@gcc.gnu.org Target: s390x-linux void baz (void); void foo (void) { int i; double d = 2.0; float f = 2222.0f; for (i = 0; i < 10; i++) { __asm ("# %0 %1" :: "or" (d), "or" (f)); baz (); } } ICEs with -m64 -O2 in find_constant_pool_ref, which assumes a single insn references at most one constant pool entry. ASM_OPERANDS can reference many more though. This breaks systemtap probes on s390x.