This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: IA64 HP-UX ILP32 patch
- From: Steve Ellcey <sje at cup dot hp dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 10 Oct 2003 11:25:05 -0700 (PDT)
- Subject: Re: IA64 HP-UX ILP32 patch
> From kenner@vlsi1.ultra.nyu.edu Thu Oct 9 16:04:47 2003
>
> You can now call convert_memory_address unconditionally on the mainline.
OK, that makes things a little cleaner. Here is a repost of the patch
where I call convert_memory_address unconditionally and allow it to do
nothing when nothing needs to be done. I retested this and there were
no regressions. As I mentioned in the original post this fixes
20020129-1.c and 930623-1.c in the gcc.c-torture/compile testsuite.
Steve Ellcey
sje@cup.hp.com
2003-10-10 Steve Ellcey <sje@cup.hp.com>
* config/ia64/ia64.c (ia64_expand_call): Force function address
to DImode.
* config/ia64/ia64.md (call_gp): Put DImode on operand 0.
*** gcc.orig/gcc/gcc/config/ia64/ia64.c Wed Oct 8 13:01:42 2003
--- gcc/gcc/gcc/config/ia64/ia64.c Fri Oct 10 11:18:59 2003
*************** ia64_expand_call (rtx retval, rtx addr,
*** 1496,1501 ****
--- 1496,1502 ----
rtx insn, b0;
addr = XEXP (addr, 0);
+ addr = convert_memory_address (DImode, addr);
b0 = gen_rtx_REG (DImode, R_BR (0));
/* ??? Should do this for functions known to bind local too. */
*** gcc.orig/gcc/gcc/config/ia64/ia64.md Wed Oct 8 13:01:45 2003
--- gcc/gcc/gcc/config/ia64/ia64.md Thu Oct 9 14:46:15 2003
***************
*** 4731,4737 ****
[(set_attr "itanium_class" "br,scall")])
(define_insn "call_gp"
! [(call (mem:DI (match_operand 0 "call_operand" "?r,i"))
(const_int 1))
(clobber (match_operand:DI 1 "register_operand" "=b,b"))
(clobber (match_scratch:DI 2 "=&r,X"))
--- 4731,4737 ----
[(set_attr "itanium_class" "br,scall")])
(define_insn "call_gp"
! [(call (mem:DI (match_operand:DI 0 "call_operand" "?r,i"))
(const_int 1))
(clobber (match_operand:DI 1 "register_operand" "=b,b"))
(clobber (match_scratch:DI 2 "=&r,X"))