--- Merging r128619 into '.':
U gcc/fold-const.c
llvm-svn: 128660
diff --git a/llvm-gcc-4.2/gcc/fold-const.c b/llvm-gcc-4.2/gcc/fold-const.c
index 8e0316e..3921ed2 100644
--- a/llvm-gcc-4.2/gcc/fold-const.c
+++ b/llvm-gcc-4.2/gcc/fold-const.c
@@ -12841,11 +12841,21 @@
case ADDR_EXPR:
{
- tree base = get_base_address (TREE_OPERAND (t, 0));
+ tree targ0 = TREE_OPERAND (t, 0);
+ tree base = get_base_address (targ0);
if (!base)
return false;
+ /* LLVM LOCAL begin */
+#ifdef ENABLE_LLVM
+ /* Support the "array ref with pointer base" extension. */
+ if (TREE_CODE (targ0) == ARRAY_REF &&
+ TREE_CODE (TREE_TYPE (TREE_OPERAND(targ0, 0))) != ARRAY_TYPE)
+ return false;
+#endif
+ /* LLVM LOCAL end */
+
/* Weak declarations may link to NULL. */
if (VAR_OR_FUNCTION_DECL_P (base))
return !DECL_WEAK (base);