gcc-8.0.0-alpha20180415 snapshot (r259389) ICEs when compiling the following snippet w/ -O1 -floop-parallelize-all -fno-tree-loop-im --param scev-max-expr-size=1: int au; void a8 (int k7) { int xo; for (xo = 0; xo < 2; ++xo) { int dd; for (dd = 0; dd < 2; ++dd) au = !!k7 ? xo : 0; } } % gcc-8.0.0-alpha20180415 -O1 -floop-parallelize-all -fno-tree-loop-im --param scev-max-expr-size=1 -w -c tjvdwsqb.c during GIMPLE pass: graphite tjvdwsqb.c: In function 'a8': tjvdwsqb.c:4:1: internal compiler error: in set_codegen_error, at graphite-isl-ast-to-gimple.c:206 a8 (int k7) ^~ 0x728814 translate_isl_ast_to_gimple::set_codegen_error() /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:205 0x728972 translate_isl_ast_to_gimple::set_codegen_error() /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/tree.h:3249 0x728972 translate_isl_ast_to_gimple::get_rename_from_scev(tree_node*, gimple**, loop*, vec<tree_node*, va_heap, vl_ptr>) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:1102 0x146a761 translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences(basic_block_def*, edge_def*, vec<tree_node*, va_heap, vl_ptr>) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:1310 0x146aca1 translate_isl_ast_to_gimple::translate_isl_ast_node_user(isl_ast_node*, edge_def*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:830 0x146b364 translate_isl_ast_to_gimple::translate_isl_ast_node_block(loop*, isl_ast_node*, edge_def*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:859 0x146ae65 translate_isl_ast_to_gimple::translate_isl_ast_for_loop(loop*, isl_ast_node*, edge_def*, tree_node*, tree_node*, tree_node*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:623 0x146b139 translate_isl_ast_to_gimple::translate_isl_ast_node_for(loop*, isl_ast_node*, edge_def*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:751 0x146ae65 translate_isl_ast_to_gimple::translate_isl_ast_for_loop(loop*, isl_ast_node*, edge_def*, tree_node*, tree_node*, tree_node*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:623 0x146b139 translate_isl_ast_to_gimple::translate_isl_ast_node_for(loop*, isl_ast_node*, edge_def*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:751 0x146b446 translate_isl_ast_to_gimple::translate_isl_ast_node_if(loop*, isl_ast_node*, edge_def*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:897 0x146b74c graphite_regenerate_ast_isl(scop*) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite-isl-ast-to-gimple.c:1505 0x1467953 graphite_transform_loops() /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite.c:413 0x1467e60 graphite_transforms /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite.c:475 0x1467e60 execute /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/graphite.c:552
Started with r257441.
This touches more cases where SCOP analysis only is checking scev_analyzable_p () but code-gen uses scalar_evolution_in_region with a loop != def-loop. The artificial scev-max-expr-size makes one succeed and the other fail. Note more complex cases could ICE because of the same reason or because some use site is really not analyzable. IMHO scev_analyzable_p should get a 'loop' arg. Nothing for 8.1.
Note the testcase no longer fails on trunk or the branch or even with GCC 8.1.0.
Testcase queued for backporting.
Author: rguenth Date: Fri Feb 1 09:17:14 2019 New Revision: 268447 URL: https://gcc.gnu.org/viewcvs?rev=268447&root=gcc&view=rev Log: 2019-02-01 Richard Biener <rguenther@suse.de> PR tree-optimization/85497 * gcc.dg/graphite/pr85497.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/graphite/pr85497.c Modified: trunk/gcc/testsuite/ChangeLog
Sorry, but it would be a mistake to think that I'm short of testcases… Usually I get one every few minutes. 1. % gcc-9.0.0-alpha20190127 -O3 -floop-parallelize-all -fopenacc -fopenmp -fno-guess-branch-probability --param scev-max-expr-size=3 -c libgomp/testsuite/libgomp.c-c++-common/target-1.c during GIMPLE pass: graphite libgomp/testsuite/libgomp.c-c++-common/target-1.c: In function 'main': libgomp/testsuite/libgomp.c-c++-common/target-1.c:78:1: internal compiler error: in set_codegen_error, at graphite-isl-ast-to-gimple.c:205 78 | main () | ^~~~ 0x79c1fa translate_isl_ast_to_gimple::set_codegen_error() /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:205 0x79c49c translate_isl_ast_to_gimple::set_codegen_error() /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/tree.h:3290 0x79c49c translate_isl_ast_to_gimple::get_rename_from_scev(tree_node*, gimple**, loop*, vec<tree_node*, va_heap, vl_ptr>) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:1104 0x15d8e8e translate_isl_ast_to_gimple::graphite_copy_stmts_from_block(basic_block_def*, basic_block_def*, vec<tree_node*, va_heap, vl_ptr>) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:1223 0x15d9845 translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences(basic_block_def*, edge_def*, vec<tree_node*, va_heap, vl_ptr>) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:1272 0x15d9ec4 translate_isl_ast_to_gimple::translate_isl_ast_node_user(isl_ast_node*, edge_def*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:832 0x15da16f translate_isl_ast_to_gimple::translate_isl_ast_for_loop(loop*, isl_ast_node*, edge_def*, tree_node*, tree_node*, tree_node*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:625 0x15da40f translate_isl_ast_to_gimple::translate_isl_ast_node_for(loop*, isl_ast_node*, edge_def*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:753 0x15da654 translate_isl_ast_to_gimple::translate_isl_ast_node_block(loop*, isl_ast_node*, edge_def*, std::map<isl_id*, tree_node*, std::less<isl_id*>, std::allocator<std::pair<isl_id* const, tree_node*> > >&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:861 0x15daa1d graphite_regenerate_ast_isl(scop*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite-isl-ast-to-gimple.c:1510 0x15d6b34 graphite_transform_loops() /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite.c:413 0x15d7130 graphite_transforms /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite.c:476 0x15d7130 execute /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190127/work/gcc-9-20190127/gcc/graphite.c:553 2. % gcc-9.0.0-alpha20190127 -O1 -floop-parallelize-all --param scev-max-expr-size=3 -c gcc/testsuite/gcc.dg/graphite/uns-block-1.c 3. % powerpc-e300c3-linux-gnu-gfortran-9.0.0-alpha20190127 -O2 -fgraphite-identity -fopenmp --param max-completely-peel-times=3 --param scev-max-expr-size=3 -w -c gcc/testsuite/gfortran.dg/gomp/pr70855.f90
On Fri, 1 Feb 2019, asolokha at gmx dot com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85497 > > --- Comment #6 from Arseny Solokha <asolokha at gmx dot com> --- > Sorry, but it would be a mistake to think that I'm short of testcases… Usually > I get one every few minutes. Heh ;) Well, I'm (slowly) working on elimiating SCEV expr size limiting, it's really a bit fragile to rely on the various entries to produce a meaningful result if one ends up hitting the limit...
GCC 10.1 has been released.
GCC 10.2 is released, adjusting target milestone.
GCC 10.3 is being released, retargeting bugs to GCC 10.4.
GCC 10.4 is being released, retargeting bugs to GCC 10.5.
Let's close this one, we have a "duplicate" with another testcase for the scev-expr-size issues.