Created attachment 26934 [details]
C source code
I just tried to compile the package mpfr-3.1.0
on gcc-4.8 trunk dated 20120319 on an AMD x86_64 box.
The compiler said
set_f.c: In function 'mpfr_set_f':
set_f.c:27:1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
Here is a valgrind dump
==19223== Invalid read of size 8
==19223== at 0xCC7B08: supportable_widening_operation(tree_code, gimple_statement_d*, tree_node*, tree_node*, tree_node**, tree_node**, tree_code*, tree_code*, int*, VEC_tree_heap**) (tree-vect-stmts.c:6096)
==19223== by 0x1082547: vect_recog_widen_mult_pattern(VEC_gimple_heap**, tree_node**, tree_node**) (tree-vect-patterns.c:664)
==19223== by 0x1087A57: vect_pattern_recog(_loop_vec_info*, _bb_vec_info*) (tree-vect-patterns.c:2553)
==19223== by 0xCEBA85: vect_slp_analyze_bb(basic_block_def*) (tree-vect-slp.c:2020)
==19223== by 0xCECA55: execute_vect_slp() (tree-vectorizer.c:265)
==19223== by 0xA52D6C: execute_one_pass(opt_pass*) (passes.c:2084)
==19223== by 0xA532E6: execute_pass_list(opt_pass*) (passes.c:2139)
==19223== by 0xB91E4D: tree_rest_of_compilation(tree_node*) (tree-optimize.c:422)
==19223== by 0x7EBD7D: cgraph_expand_function(cgraph_node*) (cgraphunit.c:1837)
==19223== by 0x7EFB4B: cgraph_optimize() (cgraphunit.c:1904)
==19223== by 0x7F01F9: cgraph_finalize_compilation_unit() (cgraphunit.c:1344)
==19223== by 0x5F3B1A: cp_write_global_declarations() (decl2.c:4074)
==19223== Address 0x10 is not stack'd, malloc'd or (recently) free'd
Preprocessed source code attached. Flag -O3 required.
The source code is C++, not C. My mistake, sorry.
Please, do your best to reduce the size of the reproducer: http://gcc.gnu.org/wiki/A_guide_to_testcase_reduction
Created attachment 27079 [details]
C++ source code
Finally, I managed to get delta to do something useful.
Minimal test case attached.
Same problem here under Debian/unstable (x86_64), with:
gcc-snapshot -O3 -march=native -std=gnu99 -c ice-setf.i
and the testcase below, using:
gcc (Debian 20120407-1) 4.8.0 20120407 (experimental) [trunk revision 186212]
Here's a simpler testcase:
// /usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.8.0/cc1 -fpreprocessed ice-setf.i -march=corei7 -mcx16 -msahf -mno-movbe -mno-aes -mno-pclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mno-avx -mno-avx2 -msse4.2 -msse4.1 -mno-lzcnt --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=corei7 -quiet -dumpbase ice-setf.i -auxbase ice-setf -O3 -std=gnu99 -o - -frandom-seed=0
# 1 "ice-setf.i"
int a(int *, unsigned long);
int g(unsigned long);
void r(int, long);
int foo(unsigned long sy, int *x, int i)
unsigned long sx = x;
if (sy <= sx)
unsigned long p = sx * 64;
int m = 0;
int tmp = i ? g(sx) : a(&m, sx);
The ICE is reproducible with -O3, but not with -O2. Also note that this is C, not C++.
Supposedly fixed by
2012-04-10 Ulrich Weigand <firstname.lastname@example.org>
* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Verify that
presumed pattern statement is within the same loop or basic block.
meaning, I cannot reproduce it.
(In reply to comment #6)
> Supposedly fixed by
> 2012-04-10 Ulrich Weigand <email@example.com>
> PR tree-optimization/52870
> * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Verify that
> presumed pattern statement is within the same loop or basic block.
> meaning, I cannot reproduce it.
I checked and trunk 20120422 doesn't seem to have this bug.
So it looks fixed to me. Suggest mark resolved.
I confirm that rebuilding gcc-snapshot with the patch http://gcc.gnu.org/viewcvs?view=revision&revision=186272 for PR tree-optimization/52870 solves the problem.
So, I think that this bug should be closed as a duplicate of bug 52870.
*** This bug has been marked as a duplicate of bug 52870 ***
*** Bug 260998 has been marked as a duplicate of this bug. ***
Seen from the domain http://volichat.com
Marked for reference. Resolved as fixed @bugzilla.