expr.c (expand_expr): Don't look through constant arrays if they don't bind locally.
authorRichard Henderson <rth@redhat.com>
Tue, 18 Nov 2003 08:37:15 +0000 (00:37 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 18 Nov 2003 08:37:15 +0000 (00:37 -0800)
        * expr.c (expand_expr): Don't look through constant arrays if
        they don't bind locally.

From-SVN: r73698

gcc/ChangeLog
gcc/expr.c

index b089988e73f0b2e1762c0dbd2f6561f2cccd3eaa..866cdc7ea3a968be2c3717130f4dc57232dc0354 100644 (file)
@@ -1,3 +1,8 @@
+2003-11-18  Richard Henderson  <rth@redhat.com>
+
+       * expr.c (expand_expr): Don't look through constant arrays if
+       they don't bind locally.
+
 2003-11-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * expr.c (convert_move): Use GET_MODE_PRECISION instead of bitsize
index 2d4953f8b1434c7ece6ff9f3ac306aa9fc19e52f..320284c99ff19a9c649ed2c900e9770d142b802b 100644 (file)
@@ -6955,7 +6955,8 @@ expand_expr (tree exp, rtx target, enum machine_mode tmode,
                 && modifier != EXPAND_MEMORY
                 && TREE_READONLY (array) && ! TREE_SIDE_EFFECTS (array)
                 && TREE_CODE (array) == VAR_DECL && DECL_INITIAL (array)
-                && TREE_CODE (DECL_INITIAL (array)) != ERROR_MARK)
+                && TREE_CODE (DECL_INITIAL (array)) != ERROR_MARK
+                && targetm.binds_local_p (array))
          {
            if (TREE_CODE (index) == INTEGER_CST)
              {