------- Comment #10 from rguenther at suse dot de  2010-01-11 17:22 -------
Subject: Re:  Internal compiler exception in with gfortran
 when using  -fwhole-program -flto -fopenmp

On Mon, 11 Jan 2010, jjcogliati-r1 at yahoo dot com wrote:

> 
> 
> ------- Comment #9 from jjcogliati-r1 at yahoo dot com  2010-01-11 17:15 
> -------
> My hunch, (and I could be wrong since my knowledge of gcc's tree code was zero
> as of Friday morning) is that it is trying to find the array's min and max
> size, but that only the min location is available, and that the max value is
> undefined.  Since this is fortran code, there are a number of places that I do
> that.  Is that plausible, and if so, how would I check this hunch?

It should never be error_mark_node ...

> Getting permission for me to get you the full code would involve a lot of
> bureaucracy (weeks to months).  

Oh, I see ...

You could try putting an assert in 
lto-streamer-out.c:lto_output_ts_type_tree_pointers so that
the TYPE_MIN/MAXVAL are not error_mark_node.

That would point you to the file and function.

Richard.

> (gdb) p type->base
> $32 = {code = ARRAY_TYPE, side_effects_flag = 0, constant_flag = 0, 
>   addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, 
>   unsigned_flag = 0, asm_written_flag = 0, nowarning_flag = 0, used_flag = 0, 
>   nothrow_flag = 0, static_flag = 0, public_flag = 0, private_flag = 0, 
>   protected_flag = 0, deprecated_flag = 0, saturating_flag = 0, 
>   default_def_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, 
>   lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, 
>   visited = 0, packed_flag = 0, user_align = 0, spare = 0, address_space = 0}
> (gdb) list
> 3717      /* For array types hash their domain and the string flag.  */
> 3718      if (TREE_CODE (type) == ARRAY_TYPE
> 3719          && TYPE_DOMAIN (type))
> 3720        {
> 3721          v = iterative_hash_hashval_t (TYPE_STRING_FLAG (type), v);
> 3722          v = visit (TYPE_DOMAIN (type), state, v,
> 3723                     sccstack, sccstate, sccstate_obstack);
> 3724        }
> 3725    
> 3726      /* Recurse for aggregates with a single element type.  */
> (gdb) where
> #0  iterative_hash_expr (t=0x7ffff1e96b70, val=154387133)
>     at ../../gcc-4.5-20100107/gcc/tree.c:6592
> #1  0x00000000005ee1fc in iterative_hash_gimple_type (type=0x7ffff1df3888, 
>     val=<value optimized out>, sccstack=0x7fffffffda38, sccstate=0x126a440, 
>     sccstate_obstack=0x7fffffffd9e0)
>     at ../../gcc-4.5-20100107/gcc/gimple.c:3713
> #2  0x00000000005ee843 in visit (t=0x7ffff1df3888, state=0x126b4b0, 
>     v=1159414094, sccstack=0x7fffffffda38, sccstate=0x126a440, 
>     sccstate_obstack=0x7fffffffd9e0)
>     at ../../gcc-4.5-20100107/gcc/gimple.c:3599
> #3  0x00000000005ee276 in iterative_hash_gimple_type (type=0x7ffff1df37e0, 
>     val=<value optimized out>, sccstack=0x7fffffffda38, sccstate=0x126a440, 
>     sccstate_obstack=0x7fffffffd9e0)
>     at ../../gcc-4.5-20100107/gcc/gimple.c:3722
> (gdb) down
> #2  0x00000000005ee843 in visit (t=0x7ffff1df3888, state=0x126b4b0, 
>     v=1159414094, sccstack=0x7fffffffda38, sccstate=0x126a440, 
>     sccstate_obstack=0x7fffffffd9e0)
>     at ../../gcc-4.5-20100107/gcc/gimple.c:3599
> 3599          tem = iterative_hash_gimple_type (t, v,
> (gdb) down
> #1  0x00000000005ee1fc in iterative_hash_gimple_type (type=0x7ffff1df3888, 
>     val=<value optimized out>, sccstack=0x7fffffffda38, sccstate=0x126a440, 
>     sccstate_obstack=0x7fffffffd9e0)
>     at ../../gcc-4.5-20100107/gcc/gimple.c:3713
> 3713           v = iterative_hash_expr (TYPE_MAX_VALUE (type), v);
> (gdb) p type->type.minval
> $33 = (tree) 0x7ffff1d995c8
> (gdb) p (type->type.minval)->base
> $34 = {code = INTEGER_CST, side_effects_flag = 0, constant_flag = 1, 
>   addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, 
>   unsigned_flag = 0, asm_written_flag = 0, nowarning_flag = 0, used_flag = 0, 
>   nothrow_flag = 0, static_flag = 0, public_flag = 0, private_flag = 0, 
>   protected_flag = 0, deprecated_flag = 0, saturating_flag = 0, 
>   default_def_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, 
>   lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, 
>   visited = 0, packed_flag = 0, user_align = 0, spare = 0, address_space = 0}
> (gdb) p (type->type.maxval)->base
> $35 = {code = ERROR_MARK, side_effects_flag = 0, constant_flag = 0, 
>   addressable_flag = 0, volatile_flag = 0, readonly_flag = 0, 
>   unsigned_flag = 0, asm_written_flag = 0, nowarning_flag = 0, used_flag = 0, 
>   nothrow_flag = 0, static_flag = 0, public_flag = 0, private_flag = 0, 
>   protected_flag = 0, deprecated_flag = 0, saturating_flag = 0, 
>   default_def_flag = 0, lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, 
>   lang_flag_3 = 0, lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, 
>   visited = 0, packed_flag = 0, user_align = 0, spare = 0, address_space = 0}
> 
> 
> 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42665

Reply via email to