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.