Thank you for the bug report. I've confirmed this with gcc-linaro-4.6-2012.03+bzr106882 on x86_64:
michaelh@crucis:~/linaro/gcc/build/native-4.6/gcc$ PATH=.:$PATH ./xgcc -c -O3 -march=native -fno-use-linker-plugin ~/linaro/bugs/lp968766.i
../../mpfr-3.1.0/src/set_f.c: In function ‘mpfr_set_f’:
../../mpfr-3.1.0/src/set_f.c:27:1: internal compiler error: Segmentation fault
The fault occurs in the SLP vectoriser. The work-around is to compile at -O3 -fno-tree-slp-vectorize or at -O2. I'll try to reproduce it against upstream.
I've set it to medium priority as it is a ftbfs, has a work around, and occurs at high optimisation levels. It seems similar to LP: #960283.
The backtrace is:
supportable_widening_operation (code=WIDEN_MULT_EXPR, stmt=0x7ffff5045410,
vectype_out=0x7ffff504ca80, vectype_in=0x7ffff504c930, decl1=0x7fffffffdbf0,
decl2=0x7fffffffdbf0, code1=0x7fffffffdc04, code2=0x7fffffffdc04,
multi_step_cvt=0x7fffffffdc08, interm_types=0x7fffffffdbf8)
at ../../../4.6/gcc/tree-vect-stmts.c:5922
5922 loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_info);
(gdb) back
#0 supportable_widening_operation (code=WIDEN_MULT_EXPR, stmt=0x7ffff5045410,
vectype_out=0x7ffff504ca80, vectype_in=0x7ffff504c930, decl1=0x7fffffffdbf0,
decl2=0x7fffffffdbf0, code1=0x7fffffffdc04, code2=0x7fffffffdc04,
multi_step_cvt=0x7fffffffdc08, interm_types=0x7fffffffdbf8)
at ../../../4.6/gcc/tree-vect-stmts.c:5922
#1 0x0000000000b31ef4 in vect_recog_widen_mult_pattern (stmts=0x7fffffffdc98,
type_in=0x7fffffffdca0, type_out=0x7fffffffdca8) at ../../../4.6/gcc/tree-vect-patterns.c:634
#2 0x0000000000b329a2 in vect_pattern_recog_1 (stmts_to_replace=0x7fffffffdc98,
vect_recog_func=0xb31b00 <vect_recog_widen_mult_pattern>, si=...)
at ../../../4.6/gcc/tree-vect-patterns.c:1727
#3 vect_pattern_recog (loop_vinfo=<optimized out>, bb_vinfo=0x126bcf0)
at ../../../4.6/gcc/tree-vect-patterns.c:1934
#4 0x00000000008260a5 in vect_slp_analyze_bb_1 (bb=0x7ffff52606e8)
at ../../../4.6/gcc/tree-vect-slp.c:1977
#5 vect_slp_analyze_bb (bb=0x7ffff52606e8) at ../../../4.6/gcc/tree-vect-slp.c:2108
#6 0x0000000000826d7b in execute_vect_slp () at ../../../4.6/gcc/tree-vectorizer.c:256
Thank you for the bug report. I've confirmed this with gcc-linaro- 4.6-2012. 03+bzr106882 on x86_64:
michaelh@ crucis: ~/linaro/ gcc/build/ native- 4.6/gcc$ PATH=.:$PATH ./xgcc -c -O3 -march=native -fno-use- linker- plugin ~/linaro/ bugs/lp968766. i 3.1.0/src/ set_f.c: In function ‘mpfr_set_f’: 3.1.0/src/ set_f.c: 27:1: internal compiler error: Segmentation fault
../../mpfr-
../../mpfr-
The fault occurs in the SLP vectoriser. The work-around is to compile at -O3 -fno-tree- slp-vectorize or at -O2. I'll try to reproduce it against upstream.
I've set it to medium priority as it is a ftbfs, has a work around, and occurs at high optimisation levels. It seems similar to LP: #960283.
The backtrace is:
supportable_ widening_ operation (code=WIDEN_ MULT_EXPR, stmt=0x7ffff504 5410, out=0x7ffff504c a80, vectype_ in=0x7ffff504c9 30, decl1=0x7ffffff fdbf0, 0x7fffffffdbf0, code1=0x7ffffff fdc04, code2=0x7ffffff fdc04, step_cvt= 0x7fffffffdc08, interm_ types=0x7ffffff fdbf8) ./4.6/gcc/ tree-vect- stmts.c: 5922 LOOP_VINFO (stmt_info); widening_ operation (code=WIDEN_ MULT_EXPR, stmt=0x7ffff504 5410, out=0x7ffff504c a80, vectype_ in=0x7ffff504c9 30, decl1=0x7ffffff fdbf0, 0x7fffffffdbf0, code1=0x7ffffff fdc04, code2=0x7ffffff fdc04, step_cvt= 0x7fffffffdc08, interm_ types=0x7ffffff fdbf8) ./4.6/gcc/ tree-vect- stmts.c: 5922 widen_mult_ pattern (stmts= 0x7fffffffdc98, in=0x7fffffffdc a0, type_out= 0x7fffffffdca8) at ../../. ./4.6/gcc/ tree-vect- patterns. c:634 recog_1 (stmts_ to_replace= 0x7fffffffdc98, recog_func= 0xb31b00 <vect_recog_ widen_mult_ pattern> , si=...) ./4.6/gcc/ tree-vect- patterns. c:1727 <optimized out>, bb_vinfo=0x126bcf0) ./4.6/gcc/ tree-vect- patterns. c:1934 analyze_ bb_1 (bb=0x7ffff52606e8) ./4.6/gcc/ tree-vect- slp.c:1977 ./4.6/gcc/ tree-vect- slp.c:2108 ./4.6/gcc/ tree-vectorizer .c:256
vectype_
decl2=
multi_
at ../../.
5922 loop_vec_info loop_info = STMT_VINFO_
(gdb) back
#0 supportable_
vectype_
decl2=
multi_
at ../../.
#1 0x0000000000b31ef4 in vect_recog_
type_
#2 0x0000000000b329a2 in vect_pattern_
vect_
at ../../.
#3 vect_pattern_recog (loop_vinfo=
at ../../.
#4 0x00000000008260a5 in vect_slp_
at ../../.
#5 vect_slp_analyze_bb (bb=0x7ffff52606e8) at ../../.
#6 0x0000000000826d7b in execute_vect_slp () at ../../.