[PATCH][GRAPHITE] Test for code generation errors
Rainer Orth
ro@CeBiTec.Uni-Bielefeld.DE
Tue Oct 3 09:49:00 GMT 2017
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 <rguenther@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
More information about the Gcc-patches
mailing list