This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/65771] [5 Regression] ICE (in loc_list_from_tree, at dwarf2out.c:14964) on arm-linux-gnueabihf


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|arm-linux-gnueabihf         |

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Happens on x86_64-linux too, started with r214899.

So, at *.optimized we have:
  # DEBUG D#2 => b
  # DEBUG D#1 => a[D#2].t
  # DEBUG c => D#1
which is expanded as:
(debug_insn 5 2 6 2 (var_location:SI D#2 (mem/c:SI (symbol_ref:SI ("b") [flags
0x82]  <var_decl 0x7f8953872990 b>) [0 b+0 S4 A32])) pr65771.c:8 -1
     (nil))
(debug_insn 6 5 7 2 (var_location:SI D#1 (mem/j:SI (plus:SI (ashift:SI
(debug_expr:SI D#2)
                (const_int 3 [0x3]))
            (const:SI (plus:SI (symbol_ref:SI ("a") [flags 0xaa]  <var_decl
0x7f8953872900 a>)
                    (const_int 4 [0x4])))) [0 a[D#2].t+0 S4 A32])) pr65771.c:8
-1
     (nil))
(debug_insn 7 6 0 2 (var_location:SI c (debug_expr:SI D#1)) pr65771.c:8 -1
     (nil))
and vartracking makes:
(note 15 2 14 2 (var_location c (mem/j:SI (plus:SI (ashift:SI (mem/c:SI
(symbol_ref:SI ("b") [flags 0x82]  <var_decl 0x7f8953872990 b>) [0 b+0 S4 A
32])
            (const_int 3 [0x3]))
        (const:SI (plus:SI (symbol_ref:SI ("a") [flags 0xaa]  <var_decl
0x7f8953872900 a>)
                (const_int 4 [0x4])))) [0 a[D#2].t+0 S4 A32]))
NOTE_INSN_VAR_LOCATION)
out of this.  Var-tracking for obvious reasons can only replace the
DEBUG_EXPR_DECLs when they appear in debug_expr RTL, because we track
DEBUG_EXPR_DECL values at RTL as RTL expressions, rather than tree.  The
problem is I believe that we try to use the MEM_EXPR as a fallback and if it
contains DEBUG_EXPR_DECL, dwarf2out.c is upset.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]