explow.c (convert_memory_address, [...]): Only return inner object if SUBREG_PROMOTED...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Thu, 8 Nov 2001 22:56:52 +0000 (22:56 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 8 Nov 2001 22:56:52 +0000 (17:56 -0500)
* explow.c (convert_memory_address, case SUBREG): Only return
inner object if SUBREG_PROMOTED_VAR_P or known to be pointer.

From-SVN: r46862

gcc/ChangeLog
gcc/explow.c

index d573ed0ad23554ec78a2a23f941094ad1dcebea7..06fa1f65f0f0d7fcc367f7dc29e6c42467c5fc8d 100644 (file)
@@ -1,3 +1,8 @@
+Thu Nov  8 18:00:55 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * explow.c (convert_memory_address, case SUBREG): Only return
+       inner object if SUBREG_PROMOTED_VAR_P or known to be pointer.
+
 2001-11-08  Richard Henderson  <rth@redhat.com>
 
        * Makefile.in (GCC_FOR_TARGET): Add build_tooldir/sys-include.
index 940a8395191b7c7cbb66855affe1aad9613cd643..874713f65e8cbc8f99c81576f669488da28f2da3 100644 (file)
@@ -363,6 +363,7 @@ convert_memory_address (to_mode, x)
 
     case SUBREG:
       if (POINTERS_EXTEND_UNSIGNED >= 0
+         && (SUBREG_PROMOTED_VAR_P (x) || REG_POINTER (SUBREG_REG (x)))
          && GET_MODE (SUBREG_REG (x)) == to_mode)
        return SUBREG_REG (x);
       break;