diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-09-18 20:43:13 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-09-18 20:43:13 +0000 |
commit | 5ae6cd0d1b33941dc142292062ff565cd99e4504 (patch) | |
tree | dc06eda173c4ba3b692dac9d2c7c0e70f0eeba75 /gcc/except.c | |
parent | bdf1f1c16d069eb1b1509cbef8fa1316d4349ba7 (diff) | |
download | gcc-5ae6cd0d1b33941dc142292062ff565cd99e4504.zip gcc-5ae6cd0d1b33941dc142292062ff565cd99e4504.tar.gz gcc-5ae6cd0d1b33941dc142292062ff565cd99e4504.tar.bz2 |
re PR target/11184 ([ia64 hpux] ICE on __builtin_apply building libobjc)
PR target/11184
* builtins.c (expand_builtin_apply): Use convert_memory_address
before returning the value.
* alias.c (find_base_value): Simplify use of
convert_memory_address.
(find_base_term): Likewise.
* builtins.c (expand_builtin_stejmp_setup): Likewise.
(expand_builtin_longjmp): Likewise.
(expand_builtin_prefetch): Likewise.
(get_memory_rtx): Likewise.
(expand_builtin_return): Likewise.
(expand_builtin_memcpy): Likewise.
(expand_builtin_strncpy): Likewise.
(expand_builtin_memset): Likewise.
(expand_builtin_va_arg): Likewise.
(expand_builtin_va_copy): Likewise.
(expand_builtin_alloca): Likewise.
* calls.c (expand_call): Likewise.
* except.c (expand_builtin_extract_return_addr): Likewise.
(expand_builtin_eh_return): Likewise.
* explow.c (convert_memory_address): Define even when
POINTER_EXTEND_UNSIGNED is not defined. Do nothing if the address
is already in the right mode.
* explow.c (memory_address): Simplify use of convert_memory_address.
(probe_stack_range): Likewise.
* expmed.c (make_tree): Likewise.
* expr.c (emit_block_move_in_libcall): Likewise.
(expand_assignment): Likewise.
(expand_expr): Likewise.
* function.c (assign_parms): Likewise.
(expand_function_end): Likewise.
* integrate.c (copy_rtx_and_substitute): Likewise.
* stmt.c (expand_computed_goto): Likewise.
PR target/11184
* gcc.dg/builtin-apply1.c: New test.
From-SVN: r71539
Diffstat (limited to 'gcc/except.c')
-rw-r--r-- | gcc/except.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/gcc/except.c b/gcc/except.c index f275866..6745dd1 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -2974,10 +2974,7 @@ expand_builtin_frob_return_addr (tree addr_tree) { rtx addr = expand_expr (addr_tree, NULL_RTX, ptr_mode, 0); -#ifdef POINTERS_EXTEND_UNSIGNED - if (GET_MODE (addr) != Pmode) - addr = convert_memory_address (Pmode, addr); -#endif + addr = convert_memory_address (Pmode, addr); #ifdef RETURN_ADDR_OFFSET addr = force_reg (Pmode, addr); @@ -2998,10 +2995,7 @@ expand_builtin_eh_return (tree stackadj_tree ATTRIBUTE_UNUSED, #ifdef EH_RETURN_STACKADJ_RTX tmp = expand_expr (stackadj_tree, cfun->eh->ehr_stackadj, VOIDmode, 0); -#ifdef POINTERS_EXTEND_UNSIGNED - if (GET_MODE (tmp) != Pmode) - tmp = convert_memory_address (Pmode, tmp); -#endif + tmp = convert_memory_address (Pmode, tmp); if (!cfun->eh->ehr_stackadj) cfun->eh->ehr_stackadj = copy_to_reg (tmp); else if (tmp != cfun->eh->ehr_stackadj) @@ -3009,10 +3003,7 @@ expand_builtin_eh_return (tree stackadj_tree ATTRIBUTE_UNUSED, #endif tmp = expand_expr (handler_tree, cfun->eh->ehr_handler, VOIDmode, 0); -#ifdef POINTERS_EXTEND_UNSIGNED - if (GET_MODE (tmp) != Pmode) - tmp = convert_memory_address (Pmode, tmp); -#endif + tmp = convert_memory_address (Pmode, tmp); if (!cfun->eh->ehr_handler) cfun->eh->ehr_handler = copy_to_reg (tmp); else if (tmp != cfun->eh->ehr_handler) |