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

--- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Quoted too few lines:

13001             dw2_asm_output_delta (2, line_label, prev_label,
13002                                   "from %s to %s", prev_label,
line_label);

which calls

dw2_asm_output_delta (int size, const char *lab1, const char *lab2,
                      const char *comment, ...)

#ifdef ASM_OUTPUT_DWARF_DELTA
  ASM_OUTPUT_DWARF_DELTA (asm_out_file, size, lab1, lab2);
#else
  dw2_assemble_integer (size,
                        gen_rtx_MINUS (Pmode,
                                       gen_rtx_SYMBOL_REF (Pmode, lab1),
                                       gen_rtx_SYMBOL_REF (Pmode, lab2)));
#endif

where for gcn (contrary to darwin or nvptx) the second code path is taken.

with
dw2_asm_output_delta (size=2, lab1=0x7fffffffda80 "*.LM6", lab2=0x7fffffffdab0
"*.LM5", comment=0x251b607 "from %s to %s")

leading to the call:

dw2_assemble_integer (size,
  (minus:DI (symbol_ref:DI ("*.LM6"))
      (symbol_ref:DI ("*.LM5")))

47      dw2_assemble_integer (int size, rtx x)
48      {
49        if (size == 2 * (int) DWARF2_ADDR_SIZE && !CONST_SCALAR_INT_P (x))

and

defaults.h:#define DWARF2_ADDR_SIZE ((POINTER_SIZE + BITS_PER_UNIT - 1) /
BITS_PER_UNIT)

That's false – hence:

95        const char *op = integer_asm_op (size, false);
(gdb) p op
$7 = 0x25fcddd "\t.2byte\t"

gets used.

Reply via email to