* config/ia64/ia64.c (ia64_expand_call): Force function address
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Oct 2003 19:25:54 +0000 (19:25 +0000)
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Oct 2003 19:25:54 +0000 (19:25 +0000)
to DImode.
* config/ia64/ia64.md (call_gp): Put DImode on operand 0.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72489 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/ia64/ia64.c
gcc/config/ia64/ia64.md

index b16d5b0..76be7d1 100644 (file)
@@ -1,3 +1,9 @@
+2003-10-14  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.
+
 2003-10-14  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * config/s390/s390.md ("muldf3", "*muldf3", "*muldf3_ibm",
index b9a4537..1c94533 100644 (file)
@@ -1500,6 +1500,7 @@ ia64_expand_call (rtx retval, rtx addr, rtx nextarg ATTRIBUTE_UNUSED,
   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.  */
index 9ead086..da7bff4 100644 (file)
   [(set_attr "itanium_class" "br,scall")])
 
 (define_insn "call_gp"
-  [(call (mem:DI (match_operand 0 "call_operand" "?r,i"))
+  [(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"))