(expand_builtin, case BUILT_IN_{SET,LONG}JMP): Properly handle case
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 18 Jun 1996 10:53:52 +0000 (06:53 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 18 Jun 1996 10:53:52 +0000 (06:53 -0400)
when ptr_mode != Pmode.

From-SVN: r12294

gcc/expr.c

index 9bda758497b191063da0c29acc904d56718ff637..1603b6283965ab868d8965502ed99c58cbd9457f 100644 (file)
@@ -8676,13 +8676,8 @@ expand_builtin (exp, target, subtarget, mode, ignore)
        break;
 
       {
-       rtx buf_addr
-         = force_reg (Pmode,
-                      convert_modes (Pmode, ptr_mode,
-                                     expand_expr (TREE_VALUE (arglist),
-                                                  subtarget,
-                                                  VOIDmode, 0),
-                                     1));
+       rtx buf_addr = expand_expr (TREE_VALUE (arglist), subtarget,
+                                   VOIDmode, 0);
        rtx lab1 = gen_label_rtx (), lab2 = gen_label_rtx ();
        enum machine_mode sa_mode = Pmode;
        rtx stack_save;
@@ -8693,6 +8688,12 @@ expand_builtin (exp, target, subtarget, mode, ignore)
        CUMULATIVE_ARGS args_so_far;
        int i;
 
+#ifdef POINTERS_EXTEND_UNSIGNED
+       buf_addr = convert_memory_address (Pmode, buf_addr);
+#endif
+
+       buf_addr = force_reg (Pmode, buf_addr);
+
        if (target == 0 || GET_CODE (target) != REG
            || REGNO (target) < FIRST_PSEUDO_REGISTER)
          target = gen_reg_rtx (value_mode);
@@ -8827,13 +8828,19 @@ expand_builtin (exp, target, subtarget, mode, ignore)
        tree dummy_id = get_identifier ("__dummy");
        tree dummy_type = build_function_type (void_type_node, NULL_TREE);
        tree dummy_decl = build_decl (FUNCTION_DECL, dummy_id, dummy_type); 
+#ifdef POINTERS_EXTEND_UNSIGNED
        rtx buf_addr
          = force_reg (Pmode,
-                      convert_modes (Pmode, ptr_mode,
-                                     expand_expr (TREE_VALUE (arglist),
-                                                  NULL_RTX,
-                                                  VOIDmode, 0),
-                                     1));
+                      convert_memory_address
+                      (Pmode,
+                       expand_expr (TREE_VALUE (arglist),
+                                    NULL_RTX, VOIDmode, 0)));
+#else
+       rtx buf_addr
+         = force_reg (Pmode, expand_expr (TREE_VALUE (arglist),
+                                          NULL_RTX,
+                                          VOIDmode, 0));
+#endif
        rtx fp = gen_rtx (MEM, Pmode, buf_addr);
        rtx lab = gen_rtx (MEM, Pmode,
                           plus_constant (buf_addr, GET_MODE_SIZE (Pmode)));