function.c (expand_function_start): Ensure r_save is in Pmode.
authorSteve Ellcey <sje@cup.hp.com>
Mon, 12 Jul 2004 22:45:14 +0000 (22:45 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Mon, 12 Jul 2004 22:45:14 +0000 (22:45 +0000)
        * function.c (expand_function_start): Ensure r_save is in Pmode.
* calls.c (prepare_call_address): Ensure static_chain_value is
  in Pmode.
* builtins.c (expand_builtin_nonlocal_goto): Ensure r_label and
          r_save_area are in Pmode.
* config/ia64/ia64.c (ia64_initialize_trampoline): Ensure addr,
  fnaddr, and static_chain are in Pmode.

From-SVN: r84584

gcc/ChangeLog
gcc/builtins.c
gcc/calls.c
gcc/config/ia64/ia64.c
gcc/function.c

index 226abd4b29b998c488c15949374b305e388d118b..1dd10f2f1b4702b5f3a9782c3500feec3f93174f 100644 (file)
@@ -1,3 +1,13 @@
+2004-07-12  Steve Ellcey  <sje@cup.hp.com>
+
+       * function.c (expand_function_start): Ensure r_save is in Pmode.
+       * calls.c (prepare_call_address): Ensure static_chain_value is
+       in Pmode.
+       * builtins.c (expand_builtin_nonlocal_goto): Ensure r_label and
+       r_save_area are in Pmode.
+       * config/ia64/ia64.c (ia64_initialize_trampoline): Ensure addr,
+       fnaddr, and static_chain are in Pmode.
+
 2004-07-12  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR target/16445
index f8a794db0a7cfb6871151ed60b90b6c0f0a40044..147cefcfe44308f0f8017263b2dc8e3afc80b803 100644 (file)
@@ -794,7 +794,9 @@ expand_builtin_nonlocal_goto (tree arglist)
   t_save_area = TREE_VALUE (arglist);
 
   r_label = expand_expr (t_label, NULL_RTX, VOIDmode, 0);
+  r_label = convert_memory_address (Pmode, r_label);
   r_save_area = expand_expr (t_save_area, NULL_RTX, VOIDmode, 0);
+  r_save_area = convert_memory_address (Pmode, r_save_area);
   r_fp = gen_rtx_MEM (Pmode, r_save_area);
   r_sp = gen_rtx_MEM (STACK_SAVEAREA_MODE (SAVE_NONLOCAL),
                      plus_constant (r_save_area, GET_MODE_SIZE (Pmode)));
index 79e78f24a303149d98d4ae0670956b089192c92a..c54ab48a7d85cb0168ad3a63e289eb2e2fb8e8b5 100644 (file)
@@ -183,6 +183,7 @@ prepare_call_address (rtx funexp, rtx static_chain_value,
 
   if (static_chain_value != 0)
     {
+      static_chain_value = convert_memory_address (Pmode, static_chain_value);
       emit_move_insn (static_chain_rtx, static_chain_value);
 
       if (REG_P (static_chain_rtx))
index 88c50874b2d28ab39119688d7530e8f4587f1b8b..3f03cab969773eab26199ea68e1591d3c1334249 100644 (file)
@@ -3474,6 +3474,11 @@ ia64_initialize_trampoline (rtx addr, rtx fnaddr, rtx static_chain)
        }
     }
 
+  /* Make sure addresses are Pmode even if we are in ILP32 mode. */
+  addr = convert_memory_address (Pmode, addr);
+  fnaddr = convert_memory_address (Pmode, fnaddr);
+  static_chain = convert_memory_address (Pmode, static_chain);
+
   /* Load up our iterator.  */
   addr_reg = gen_reg_rtx (Pmode);
   emit_move_insn (addr_reg, addr);
index 6780e355da51651806cd6a837f118eea82b59d4a..19549b1b800a0c50103b8def30234f0add267949 100644 (file)
@@ -4190,6 +4190,7 @@ expand_function_start (tree subr)
       t_save = build (ARRAY_REF, ptr_type_node, cfun->nonlocal_goto_save_area,
                      integer_zero_node, NULL_TREE, NULL_TREE);
       r_save = expand_expr (t_save, NULL_RTX, VOIDmode, EXPAND_WRITE);
+      r_save = convert_memory_address (Pmode, r_save);
 
       emit_move_insn (r_save, virtual_stack_vars_rtx);
       update_nonlocal_goto_save_area ();