https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70856

Thomas Schwinge <tschwinge at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org,
                   |                            |tschwinge at gcc dot gnu.org,
                   |                            |vries at gcc dot gnu.org

--- Comment #3 from Thomas Schwinge <tschwinge at gcc dot gnu.org> ---
I had a cursory look at that one.  Differently from PR70857, the ICE triggers
here the second time that pass_ipa_pta is run (all_late_ipa_passes), and not
the first one (which is only active if "-fopenacc" is in effect; Tom CCed for
your information anyway).  This is "fixed" ;-) by reverting the r233734 changes
for PR69951 "[Bug tree-optimization/69951] wrong code at -O1 and above on
x86_64-linux-gnu":

    2016-02-26  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/69551
        * tree-ssa-structalias.c (get_constraint_for_ssa_var): When
        looking through aliases adjust DECL_PT_UID to refer to the
        ultimate alias target.

    --- gcc/tree-ssa-structalias.c
    +++ gcc/tree-ssa-structalias.c
    @@ -2943,6 +2943,14 @@ get_constraint_for_ssa_var (tree t, vec<ce_s>
*results, bool address_p)
           if (node && node->alias && node->analyzed)
            {
              node = node->ultimate_alias_target ();
    +         /* Canonicalize the PT uid of all aliases to the ultimate target.
    +            ???  Hopefully the set of aliases can't change in a way that
    +            changes the ultimate alias target.  */
    +         gcc_assert ((! DECL_PT_UID_SET_P (node->decl)
    +                      || DECL_PT_UID (node->decl) == DECL_UID
(node->decl))
    +                     && (! DECL_PT_UID_SET_P (t)
    +                         || DECL_PT_UID (t) == DECL_UID (node->decl)));
    +         DECL_PT_UID (t) = DECL_UID (node->decl);
              t = node->decl;
            }
         }

    (gdb) call node->debug()
    A.4.3435/10 (A.4) @0x7ffff6a7f800
      Type: variable definition analyzed
      Visibility: prevailing_def_ironly artificial
      References: 
      Referring: A.1.3429/6 (alias)MAIN__/0 (read)
      Availability: available
      Varpool flags: initialized used-by-single-function read-only
const-value-known
    (gdb) call debug_tree(node->decl)
     <var_decl 0x7ffff7ff5c60 A.4
        type <array_type 0x7ffff6a91b28
            type <real_type 0x7ffff68e6540 real(kind=4) SF
                size <integer_cst 0x7ffff68cde10 constant 32>
                unit size <integer_cst 0x7ffff68cde28 constant 4>
                align 32 symtab 0 alias set 9 canonical type 0x7ffff68e6540
precision 32
                pointer_to_this <pointer_type 0x7ffff68e6738>>
            type_2 DI
            size <integer_cst 0x7ffff68cdbd0 constant 64>
            unit size <integer_cst 0x7ffff68cdbe8 constant 8>
            align 32 symtab 0 alias set 9 canonical type 0x7ffff6a91b28
            domain <integer_type 0x7ffff6a91540 type <integer_type
0x7ffff68d1930 integer(kind=8)>
                DI size <integer_cst 0x7ffff68cdbd0 64> unit size <integer_cst
0x7ffff68cdbe8 8>
                align 64 symtab 0 alias set -1 canonical type 0x7ffff6a91540
precision 64 min <integer_cst 0x7ffff68e8258 0> max <integer_cst 0x7ffff6a886d8
1>>
            pointer_to_this <pointer_type 0x7ffff6a91f18>>
        readonly constant static ignored DI file ../pr70856-z1.f90 line 3 col 0
size <integer_cst 0x7ffff68cdbd0 64> unit size <integer_cst 0x7ffff68cdbe8 8>
        align 64 context <function_decl 0x7ffff6a8ec40 p> initial <constructor
0x7ffff6a88c00>>
    (gdb) call debug_tree(t)
     <var_decl 0x7ffff7ff5a20 A.1
        type <array_type 0x7ffff6a911f8
            type <real_type 0x7ffff68e6540 real(kind=4) SF
                size <integer_cst 0x7ffff68cde10 constant 32>
                unit size <integer_cst 0x7ffff68cde28 constant 4>
                align 32 symtab 0 alias set 9 canonical type 0x7ffff68e6540
precision 32
                pointer_to_this <pointer_type 0x7ffff68e6738>>
            type_2 DI
            size <integer_cst 0x7ffff68cdbd0 constant 64>
            unit size <integer_cst 0x7ffff68cdbe8 constant 8>
            align 32 symtab 0 alias set 9 canonical type 0x7ffff6a911f8
            domain <integer_type 0x7ffff6a91540 type <integer_type
0x7ffff68d1930 integer(kind=8)>
                DI size <integer_cst 0x7ffff68cdbd0 64> unit size <integer_cst
0x7ffff68cdbe8 8>
                align 64 symtab 0 alias set -1 canonical type 0x7ffff6a91540
precision 64 min <integer_cst 0x7ffff68e8258 0> max <integer_cst 0x7ffff6a886d8
1>>
            pointer_to_this <pointer_type 0x7ffff6a91738>>
        readonly constant static ignored DI file ../pr70856-z1.f90 line 2 col 0
size <integer_cst 0x7ffff68cdbd0 64> unit size <integer_cst 0x7ffff68cdbe8 8>
        align 64 context <function_decl 0x7ffff6a8ec40 p>>

Reply via email to