From 831ecbd460cd8f553e5938c7c4956840405020fd Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Fri, 19 Jan 2001 13:04:23 -0500 Subject: [PATCH] alias.c (rtx_equal_for_memref_p, [...]): Don't assume args are REG. * alias.c (rtx_equal_for_memref_p, case ADDRESSOF): Don't assume args are REG. * expr.c (store_constructor): Don't look at MEM_ALIAS_SET unless MEM. * function.c (assign_parms): Use INTVAL for a CONST_INT. From-SVN: r39139 --- gcc/ChangeLog | 12 ++++++++++-- gcc/alias.c | 4 ++-- gcc/expr.c | 1 + gcc/function.c | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 58eb78f7f5a..c288232b92f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,9 +1,17 @@ +Fri Jan 19 13:02:56 2001 Richard Kenner + + * alias.c (rtx_equal_for_memref_p, case ADDRESSOF): Don't assume + args are REG. + * expr.c (store_constructor): Don't look at MEM_ALIAS_SET unless MEM. + * function.c (assign_parms): Use INTVAL for a CONST_INT. + 2001-01-19 Jason Merrill * dwarf2out.c (gen_subprogram_die): Don't reuse the in-class decl for the abstract instance of an inline function. -Fri Jan 19 14:31:35 2001 Alexandre Oliva , J"orn Rennecke +Fri Jan 19 14:31:35 2001 Alexandre Oliva + J"orn Rennecke * reload1.c (move2add_note_store): Treat all registers directly or indirectly derived from a base register as members of the same set @@ -19,7 +27,7 @@ Fri Jan 19 09:18:42 2001 J"orn Rennecke Thu Jan 18 06:43:04 2001 Richard Kenner - * flow.c (mark_set_1, case PARALLEL): Now case; rework to allow + * flow.c (mark_set_1, case PARALLEL): New case; rework to allow entry to be EXPR_LIST. * rtlanal.c (reg_overlap_mentioned_p): Allow PARALLEL in SET to be an EXPR_LIST (but not null, which other code doesn't allow). diff --git a/gcc/alias.c b/gcc/alias.c index a77e7c8f7c1..6e92533a098 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -1007,8 +1007,8 @@ rtx_equal_for_memref_p (x, y) return 0; case ADDRESSOF: - return (REGNO (XEXP (x, 0)) == REGNO (XEXP (y, 0)) - && XINT (x, 1) == XINT (y, 1)); + return (XINT (x, 1) == XINT (y, 1) + && rtx_equal_for_memref_p (XEXP (x, 0), XEXP (y, 0))); default: break; diff --git a/gcc/expr.c b/gcc/expr.c index a4637abc359..a78be1b132b 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -4785,6 +4785,7 @@ store_constructor (exp, target, align, cleared, size) store_constructor_field (target, bitsize, bitpos, mode, value, type, align, cleared, TYPE_NONALIASED_COMPONENT (type) + && GET_CODE (target) == MEM ? MEM_ALIAS_SET (target) : get_alias_set (elttype)); diff --git a/gcc/function.c b/gcc/function.c index 3e02f98d5ec..22a5a74dea0 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4564,7 +4564,7 @@ assign_parms (fndecl) && GET_CODE (XEXP (XVECEXP (entry_parm, 0, i), 0)) == REG && (GET_MODE (XEXP (XVECEXP (entry_parm, 0, i), 0)) == passed_mode) - && XINT (XEXP (XVECEXP (entry_parm, 0, i), 1), 0) == 0) + && INTVAL (XEXP (XVECEXP (entry_parm, 0, i), 1)) == 0) { entry_parm = XEXP (XVECEXP (entry_parm, 0, i), 0); DECL_INCOMING_RTL (parm) = entry_parm; -- 2.30.2