Hi Richard, > The following patch adjust GRAPHITE testing to check that existing > code generation issues occur and makes code generation ICE with > -fchecking --param graphite-allow-codegen-errors=0. The param > is really a testsuite artifact so we can have testcases with > issues where we have papered over GRAPHITE issues with aborting > code generation. > > This avoids regressing testcases that do not show code generation > issues and it allows detecting testcases that no longer show > code generation issues (so we can avoid regressing that feat later). > > I'm now working on code-generation issues so that's an important > feature for me. > > Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk. > > Richard. > > 2017-10-02 Richard Biener <rguent...@suse.de> > > * graphite-isl-ast-to-gimple.c (set_codegen_error): With > -fchecking and --param graphite-allow-codegen-errors=0 ICE. > * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param. > > * gcc.dg/graphite/graphite.exp: Add -fdump-tree-graphite-details. > * gcc.dg/graphite/id-16.c: Adjust for existing codegen errors. > * gcc.dg/graphite/pr46168.c: Likewise. > * gcc.dg/graphite/pr68756.c: Likewise. > * gcc.dg/graphite/pr69728.c: Likewise. > * gcc.dg/graphite/pr71575-2.c: Likewise. > * gcc.dg/graphite/pr77362.c: Likewise. > * gcc.dg/graphite/pr81373.c: Likewise. > * gcc.dg/graphite/run-id-pr67700-1.c: Likewise. > * gfortran.dg/graphite/interchange-1.f: Likewise. > * gfortran.dg/graphite/pr29581.f90: Likewise. > * gfortran.dg/graphite/pr42334-1.f: Likewise. > * gfortran.dg/graphite/pr42393-1.f90: Likewise. > * gfortran.dg/graphite/pr42393.f90: Likewise. > * gfortran.dg/graphite/pr47019.f: Likewise.
the patch caused a couple of regressions, unfortunately. E.g. +FAIL: gfortran.dg/graphite/id-17.f -O (internal compiler error) +FAIL: gfortran.dg/graphite/id-17.f -O (test for excess errors) Excess errors: during GIMPLE pass: graphite /vol/gcc/src/hg/trunk/local/gcc/testsuite/gfortran.dg/graphite/id-17.f:1:0: internal compiler error: in set_codegen_error, at graphite-isl-ast-to-gimple.c:248 0x10d5ebb translate_isl_ast_to_gimple::set_codegen_error() /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:247 0x10d0023 translate_isl_ast_to_gimple::set_codegen_error() /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:247 0x10d0023 translate_isl_ast_to_gimple::get_rename_from_scev(tree_node*, gimple**, loop*, basic_block_def*, basic_block_def*, vec<tree_node*, va_heap, vl_ptr>) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:1510 0x10d2963 translate_isl_ast_to_gimple::rename_uses(gimple*, gimple_stmt_iterator*, basic_block_def*, loop*, vec<tree_node*, va_heap, vl_ptr>) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:1644 0x10d4217 translate_isl_ast_to_gimple::graphite_copy_stmts_from_block(basic_block_def*, basic_block_def*, vec<tree_node*, va_heap, vl_ptr>) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:2516 0x10d4653 translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences(basic_block_def*, edge_def*, vec<tree_node*, va_heap, vl_ptr>) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:2717 0x10d4ecb 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*> > >&) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:835 0x10d5147 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*> > >&) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:649 0x10d53ab 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*> > >&) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:752 0x10d5477 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*> > >&) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:864 0x10d5147 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*> > >&) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:649 0x10d53ab 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*> > >&) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:752 0x10d59cf graphite_regenerate_ast_isl(scop*) /vol/gcc/src/hg/trunk/local/gcc/graphite-isl-ast-to-gimple.c:2954 0x10cbb23 graphite_transform_loops() /vol/gcc/src/hg/trunk/local/gcc/graphite.c:442 0x10ccbe7 graphite_transforms /vol/gcc/src/hg/trunk/local/gcc/graphite.c:486 0x10ccbe7 execute /vol/gcc/src/hg/trunk/local/gcc/graphite.c:563 and several more. I'm seeing this on 32-bit Solaris/SPARC, Solaris/x86, and Linux/x86_64. Besides, there's +UNRESOLVED: gfortran.dg/graphite/pr42393-1.f90 -O scan-tree-dump-times graphite "code generation error" 1 for both 32 and 64-bit. The log indicates gfortran.dg/graphite/pr42393-1.f90 -O : dump file does not exist and indeed the test lacks -fdump-tree-graphite-details contrary to ChangeLog. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University