[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