alias.c (rtx_equal_for_memref_p, [...]): Don't assume args are REG.
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 19 Jan 2001 18:04:23 +0000 (13:04 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 19 Jan 2001 18:04:23 +0000 (13:04 -0500)
* 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
gcc/alias.c
gcc/expr.c
gcc/function.c

index 58eb78f7f5a5485b93c3fbd59b27919446a3a433..c288232b92f14a0ed0b52e1eaf94ab0968584ca5 100644 (file)
@@ -1,9 +1,17 @@
+Fri Jan 19 13:02:56 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * 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  <jason@redhat.com>
 
        * 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  <aoliva@redhat.com>, J"orn Rennecke <amylaar@redhat.com>
+Fri Jan 19 14:31:35 2001  Alexandre Oliva  <aoliva@redhat.com>
+                         J"orn Rennecke <amylaar@redhat.com>
 
        * 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 <amylaar@redhat.com>
 
 Thu Jan 18 06:43:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
-       * 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).
index a77e7c8f7c1e93c203e7c0b0fbc724d3bb141cd2..6e92533a0989bb09543733489332adfe4555adde 100644 (file)
@@ -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;
index a4637abc359c3187cd70c523a208d40f6e0ab6d2..a78be1b132b4b67beb57931d65d13c3fa72830ff 100644 (file)
@@ -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));
 
index 3e02f98d5ec684881d07c60eff5c3f4478bc3bf4..22a5a74dea0c4b17717dc917a8a6f7fcbd5740a8 100644 (file)
@@ -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;