[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