Re: Tree checking failure in jc1

Dave Korn <[email protected]>
Newsgroups gmane.comp.gcc.devel,gmane.comp.gcc.java.devel
Message-ID <[email protected]>
On 10/12/2010 20:49, Dave Korn wrote:

>   I found a couple of new FAILs in my latest libjava testrun:
> 
>> FAIL: newarray_overflow -O3 compilation from source
>> FAIL: newarray_overflow -O3 -findirect-dispatch compilation from source
> 
>   These turn out to be tree checking failures:
> 
>> In file included from <built-in>:3:0:
>> newarray_overflow.java:20:0: internal compiler error: tree check: expected class
>>  'type', have 'declaration' (function_decl) in put_decl_node, at java/lang.c:405

  This turned out to be a second bug, triggered by -fdump-tree-all attempting
to output some line of mangled gimple.  Without that flag, or ...

> 	      put_decl_node (TREE_CODE (DECL_CONTEXT (node)) == FUNCTION_DECL
>                                ? DECL_CONTEXT (node)
>                                : TYPE_NAME (DECL_CONTEXT (node)),
>                                verbosity);

... with the suggested fix, compilation proceeds to the site of the actual
crash that occurred in the testsuite run: a segfault in gimple.c#walk_gimple_op():

> Program received signal SIGSEGV, Segmentation fault.
> 0x007cfdbe in walk_gimple_op (stmt=0x7fe106e0, callback_op=0x4a0ef0 <verify_expr
> .265801>, wi=0x326c554) at /gnu/gcc/gcc/gcc/gimple.c:2841
> 2841      return !AGGREGATE_TYPE_P (type);
> (gdb) call debug_gimple_stmt (stmt)
> newarray_overflow.int_check.__builtin_prefetch (D.1284_85, 0, );
> 
> (gdb)

  I think this is the same as PR29710(*) "gnat ICEs on -fprefetch-loop-arrays
-O1", so I'll put the rest of my findings there.  Note that weird missing
third argument: it turns out that integer_three_node hasn't been initialised
at the time that issue_prefetch_ref() attempts to pass it to gimple_build_call().

    cheers,
      DaveK
-- 
(*) - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29710
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.