http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52555
Bug #: 52555 Summary: [Regression] ICE unrecognizable insn with -ffast-math and __attribute__((optimize(xx))) Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: ro...@binarylife.net $ cat test.cpp typedef unsigned long value_t; struct foo { static float _factor; value_t _val; foo() : _val(7) { _val=__builtin_ceil(_val * _factor); } }; struct bar { void operator()(foo&); }; void __attribute__((optimize("O"))) test() { foo f; bar b; b(f); } int main() { test(); } $ g++ -c -O2 -ffast-math test.cpp test.cpp: In function ‘void test()’: test.cpp:24:1: error: unrecognizable insn: (insn 9 8 10 3 (parallel [ (set (reg:XF 67) (unspec:XF [ (reg:XF 68) ] UNSPEC_FRNDINT_CEIL)) (clobber (reg:CC 17 flags)) ]) test.cpp:10 -1 (nil)) test.cpp:24:1: internal compiler error: in extract_insn, at recog.c:2109 Please submit a full bug report, This happens with x86 and x86_64.