aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-08-26 11:23:37 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-08-26 11:23:37 +0000
commit321358d4e4b17f1c4c0cfb88541d4e8c2720be5d (patch)
tree5687bf7741ee4c0a8d9fe62d0a8f43058130eb2f /gcc/expr.c
parentc2b640a7ca9dcce8c6f32d0a55ee12b7a81da475 (diff)
downloadgcc-321358d4e4b17f1c4c0cfb88541d4e8c2720be5d.zip
gcc-321358d4e4b17f1c4c0cfb88541d4e8c2720be5d.tar.gz
gcc-321358d4e4b17f1c4c0cfb88541d4e8c2720be5d.tar.bz2
expr.c (string_constant): Handle &MEM_REF.
2011-08-26 Richard Guenther <rguenther@suse.de> * expr.c (string_constant): Handle &MEM_REF. From-SVN: r178100
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index a6746d1..e29f3f6 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -10168,6 +10168,17 @@ string_constant (tree arg, tree *ptr_offset)
fold_convert (sizetype, lower_bound));
}
}
+ else if (TREE_CODE (TREE_OPERAND (arg, 0)) == MEM_REF)
+ {
+ array = TREE_OPERAND (TREE_OPERAND (arg, 0), 0);
+ offset = TREE_OPERAND (TREE_OPERAND (arg, 0), 1);
+ if (TREE_CODE (array) != ADDR_EXPR)
+ return 0;
+ array = TREE_OPERAND (array, 0);
+ if (TREE_CODE (array) != STRING_CST
+ && TREE_CODE (array) != VAR_DECL)
+ return 0;
+ }
else
return 0;
}