diff options
author | Richard Henderson <rth@redhat.com> | 2008-10-12 13:26:24 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2008-10-12 13:26:24 -0700 |
commit | f6129d66bce280604f349fe2144ae5649964a476 (patch) | |
tree | bbec7b5c162660943ed96247083662af72606da7 /gcc/alias.c | |
parent | dc8bd8d973f962ff4ea11f455e0daf398aa8d732 (diff) | |
download | gcc-f6129d66bce280604f349fe2144ae5649964a476.zip gcc-f6129d66bce280604f349fe2144ae5649964a476.tar.gz gcc-f6129d66bce280604f349fe2144ae5649964a476.tar.bz2 |
re PR middle-end/37447 (test pr28982b.c fails execution on power4 or later with ira change)
PR middle-end/37447
* Makefile.in (reload1.o): Depend on EMIT_RTL_H.
* alias.c (value_addr_p, stack_addr_p): Remove.
(nonoverlapping_memrefs_p): Remove IRA special case.
* emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
* emit-rtl.h (set_mem_attrs_for_spill): Declare.
* reload1.c (alter_reg): Use it.
From-SVN: r141077
Diffstat (limited to 'gcc/alias.c')
-rw-r--r-- | gcc/alias.c | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/gcc/alias.c b/gcc/alias.c index 1135489..4cadb6b 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -1983,34 +1983,6 @@ adjust_offset_for_component_ref (tree x, rtx offset) return GEN_INT (ioffset); } -/* The function returns nonzero if X is an address containg VALUE. */ -static int -value_addr_p (rtx x) -{ - if (GET_CODE (x) == VALUE) - return 1; - if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 0)) == VALUE) - return 1; - return 0; -} - -/* The function returns nonzero if X is a stack address. */ -static int -stack_addr_p (rtx x) -{ - if (x == hard_frame_pointer_rtx || x == frame_pointer_rtx - || x == arg_pointer_rtx || x == stack_pointer_rtx) - return 1; - if (GET_CODE (x) == PLUS - && (XEXP (x, 0) == hard_frame_pointer_rtx - || XEXP (x, 0) == frame_pointer_rtx - || XEXP (x, 0) == arg_pointer_rtx - || XEXP (x, 0) == stack_pointer_rtx) - && CONSTANT_P (XEXP (x, 1))) - return 1; - return 0; -} - /* Return nonzero if we can determine the exprs corresponding to memrefs X and Y and they do not overlap. */ @@ -2020,27 +1992,9 @@ nonoverlapping_memrefs_p (const_rtx x, const_rtx y) tree exprx = MEM_EXPR (x), expry = MEM_EXPR (y); rtx rtlx, rtly; rtx basex, basey; - rtx x_addr, y_addr; rtx moffsetx, moffsety; HOST_WIDE_INT offsetx = 0, offsety = 0, sizex, sizey, tem; - if (flag_ira && optimize && reload_completed) - { - /* We need this code for IRA because of stack slot sharing. RTL - in decl can be different than RTL used in insns. It is a - safe code although it can be conservative sometime. */ - x_addr = canon_rtx (get_addr (XEXP (x, 0))); - y_addr = canon_rtx (get_addr (XEXP (y, 0))); - - if (value_addr_p (x_addr) || value_addr_p (y_addr)) - return 0; - - if (stack_addr_p (x_addr) && stack_addr_p (y_addr) - && memrefs_conflict_p (SIZE_FOR_MODE (y), y_addr, - SIZE_FOR_MODE (x), x_addr, 0)) - return 0; - } - /* Unless both have exprs, we can't tell anything. */ if (exprx == 0 || expry == 0) return 0; |