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.

Reply via email to