aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-05-27 06:38:37 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1996-05-27 06:38:37 -0400
commit0fedef289f6ff5a1eac67f4c6b8d6ee91b324d1e (patch)
treeba655a4c69f8259a4052c19971bb478429bc9f2b /gcc
parent2ff43a3340c7f0e73162e6cf2566989287c7cb9e (diff)
downloadgcc-0fedef289f6ff5a1eac67f4c6b8d6ee91b324d1e.zip
gcc-0fedef289f6ff5a1eac67f4c6b8d6ee91b324d1e.tar.gz
gcc-0fedef289f6ff5a1eac67f4c6b8d6ee91b324d1e.tar.bz2
(expand_builtin, case BUILT_IN_{LONG,SET}JMP): Convert block address
from ptr_mode to Pmode. From-SVN: r12120
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 29b07e5..f262443 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8565,8 +8565,12 @@ expand_builtin (exp, target, subtarget, mode, ignore)
{
rtx buf_addr
- = force_reg (Pmode, expand_expr (TREE_VALUE (arglist), subtarget,
- VOIDmode, 0));
+ = force_reg (Pmode,
+ convert_modes (Pmode, ptr_mode,
+ expand_expr (TREE_VALUE (arglist),
+ subtarget,
+ VOIDmode, 0),
+ 1));
rtx lab1 = gen_label_rtx (), lab2 = gen_label_rtx ();
enum machine_mode sa_mode = Pmode;
rtx stack_save;
@@ -8712,8 +8716,12 @@ expand_builtin (exp, target, subtarget, mode, ignore)
tree dummy_type = build_function_type (void_type_node, NULL_TREE);
tree dummy_decl = build_decl (FUNCTION_DECL, dummy_id, dummy_type);
rtx buf_addr
- = force_reg (Pmode, expand_expr (TREE_VALUE (arglist), NULL_RTX,
- VOIDmode, 0));
+ = force_reg (Pmode,
+ convert_modes (Pmode, ptr_mode,
+ expand_expr (TREE_VALUE (arglist),
+ NULL_RTX,
+ VOIDmode, 0),
+ 1));
rtx fp = gen_rtx (MEM, Pmode, buf_addr);
rtx lab = gen_rtx (MEM, Pmode,
plus_constant (buf_addr, GET_MODE_SIZE (Pmode)));