[Bug middle-end/61577] [4.9.0] can't compile on hp-ux v3 ia64
danglin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Jul 13 15:08:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61577
John David Anglin <danglin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2019-07-13
Component|target |middle-end
Ever confirmed|0 |1
--- Comment #67 from John David Anglin <danglin at gcc dot gnu.org> ---
It looks to me as if the pointer computed to load __SB_masks in islower is zero
extended rather than pointer extended:
(insn 66 73 74 3 (set (reg/f:DI 14 r14 [349])
(lo_sum:DI (mem/u/c:DI (reg/f:DI 14 r14 [349]) [0 S8 A64])
(symbol_ref:DI ("__SB_masks") [flags 0x44] <var_decl 7ee7f1b8
__SB_masks>))) "islower.c":9 111 {*load_symptr_low}
(expr_list:REG_EQUAL (symbol_ref:DI ("__SB_masks") [flags 0x44] <var_decl
7ee7f1b8 __SB_masks>)
(nil)))
(insn 74 66 12 3 (unspec_volatile [
(const_int 3 [0x3])
] UNSPECV_INSN_GROUP_BARRIER) "islower.c":9 364 {insn_group_barrier}
(nil))
(insn 12 74 75 3 (set (reg/f:DI 14 r14 [orig:341 __SB_masks.2_2+-4 ] [341])
(zero_extend:DI (mem/f/c:SI (reg/f:DI 14 r14 [349]) [2 __SB_masks+0 S4
A32]))) "islower.c":9 137 {zero_extendsidi2}
(nil))
In hpux.h, we have:
/* A C expression whose value is zero if pointers that need to be extended
from being `POINTER_SIZE' bits wide to `Pmode' are sign-extended and
greater then zero if they are zero-extended and less then zero if the
ptr_extend instruction should be used. */
#define POINTERS_EXTEND_UNSIGNED -1
So, I would say this is a middle-end bug, not a target bug. ia64-hpux is the
only target where POINTERS_EXTEND_UNSIGNED is -1.
It would help to bisect from working compiler to determine change that broke
things.
More information about the Gcc-bugs
mailing list