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