From: Richard Kenner Date: Tue, 18 Jun 1996 10:53:52 +0000 (-0400) Subject: (expand_builtin, case BUILT_IN_{SET,LONG}JMP): Properly handle case X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=85ab4aaaec03fc5ef6d0d4177a993cf36b1f7fab;p=gcc.git (expand_builtin, case BUILT_IN_{SET,LONG}JMP): Properly handle case when ptr_mode != Pmode. From-SVN: r12294 --- diff --git a/gcc/expr.c b/gcc/expr.c index 9bda758497b..1603b628396 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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)));