From: rguenth Date: Fri, 26 Aug 2011 11:23:37 +0000 (+0000) Subject: 2011-08-26 Richard Guenther X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=f32d300e7da31c677823798d7a57534953310f1e 2011-08-26 Richard Guenther * expr.c (string_constant): Handle &MEM_REF. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178100 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 55a5a84f386..c8d97d83e3b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2011-08-26 Richard Guenther + + * expr.c (string_constant): Handle &MEM_REF. + 2011-08-26 Andrew Stubbs * config/arm/arm.c (struct four_ints): New type. diff --git a/gcc/expr.c b/gcc/expr.c index a6746d1b50e..e29f3f6f4f9 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; }