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

On Fri, 8 Jan 2010, jjcogliati-r1 at yahoo dot com wrote:

> ------- Comment #5 from jjcogliati-r1 at yahoo dot com  2010-01-08 22:28 
> -------
> (In reply to comment #4)
> > Subject: Re:  Internal compiler exception in with gfortran
> >  when using  -fwhole-program -flto -fopenmp
> > 
> > On Fri, 8 Jan 2010, jjcogliati-r1 at yahoo dot com wrote:
> > 
> > > ------- Comment #3 from jjcogliati-r1 at yahoo dot com  2010-01-08 21:38 
> > > -------
> > > (In reply to comment #1)
> > > > Can you run it in a debugger and print what 'code' actually is?  Can you
> > > > check if removing -g fixes the ICE?
> > > > 
> > > 
> > > Code is: 
> > > ERROR_MARK
> > 
> > Hm, ok.  I guess we need a testcase anyway.  A tarball with all
> > preprocessed sources is probably enough.  You can also try reducing
> > the set of files required by performing incremental linking with
> > -r and omit files one-by-one.
> > 
> > Richard.
> > 
> 
> (gdb) p *t
> $16 = {base = {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}, common = {base = {
>       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}, chain = 0x0, 
> 
> if we go up 1 to:
> (gdb) up
> #1  0x00000000005ee1cc in iterative_hash_gimple_type (type=0x7ffff1df3888, 
>     val=<value optimized out>, sccstack=0x7fffffffda38, sccstate=0x1269440, 
>     sccstate_obstack=0x7fffffffd9e0)
>     at ../../gcc-4.5-20100107/gcc/gimple.c:3711
> 3711          v = iterative_hash_expr (TYPE_MAX_VALUE (type), v);
> (gdb) p type
> $17 = (union tree_node *) 0x7ffff1df3888
> (gdb) p *type
> $18 = {base = {code = INTEGER_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}, common = {base = {
>       code = INTEGER_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, 
> 
> Maybe that helps.  If I have inspiration over the weekend I will try to make a
> test case on Monday. 

Try

Index: gcc/gimple.c
===================================================================
--- gcc/gimple.c        (revision 155739)
+++ gcc/gimple.c        (working copy)
@@ -3707,8 +3707,10 @@ iterative_hash_gimple_type (tree type, h
   /* For integer types hash the types min/max values and the string flag.  
*/
   if (TREE_CODE (type) == INTEGER_TYPE)
     {
-      v = iterative_hash_expr (TYPE_MIN_VALUE (type), v);
-      v = iterative_hash_expr (TYPE_MAX_VALUE (type), v);
+      if (TYPE_MIN_VALUE (type))
+       v = iterative_hash_expr (TYPE_MIN_VALUE (type), v);
+      if (TYPE_MAX_VALUE (type))
+       v = iterative_hash_expr (TYPE_MAX_VALUE (type), v);
       v = iterative_hash_hashval_t (TYPE_STRING_FLAG (type), v);
     }



-- 


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

Reply via email to