* function.c (expand_function_start): Ensure r_save is in Pmode.
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 12 Jul 2004 22:45:14 +0000 (22:45 +0000)
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 12 Jul 2004 22:45:14 +0000 (22:45 +0000)
* 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.

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

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

index 226abd4..1dd10f2 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 f8a794d..147cefc 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 79e78f2..c54ab48 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 88c5087..3f03cab 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 6780e35..19549b1 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 ();