aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authormsebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4>2018-05-15 21:52:16 +0000
committermsebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4>2018-05-15 21:52:16 +0000
commita20cbb58c557bdc08fd6ddaa457eac1fea3ccda8 (patch)
tree10e11bad25a9ba1a4554e39dcfae31ec8bfc2f17 /gcc/calls.c
parent0dbcf2c2b2e4e778d17fddc22b6a5c0b500fff50 (diff)
PR middle-end/85643 - attribute nonstring fails to squash -Wstringop-truncation warning
gcc/ChangeLog: PR middle-end/85643 * calls.c (get_attr_nonstring_decl): Handle MEM_REF. gcc/testsuite/ChangeLog: PR middle-end/85643 * c-c++-common/attr-nonstring-7.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260271 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/calls.c')
-rw-r--r--gcc/calls.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 9eb0467311b..f0e9d3b1cbb 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1586,8 +1586,12 @@ get_attr_nonstring_decl (tree expr, tree *ref)
if (ref)
*ref = decl;
- if (TREE_CODE (decl) == COMPONENT_REF)
+ if (TREE_CODE (decl) == ARRAY_REF)
+ decl = TREE_OPERAND (decl, 0);
+ else if (TREE_CODE (decl) == COMPONENT_REF)
decl = TREE_OPERAND (decl, 1);
+ else if (TREE_CODE (decl) == MEM_REF)
+ return get_attr_nonstring_decl (TREE_OPERAND (decl, 0), ref);
if (DECL_P (decl)
&& lookup_attribute ("nonstring", DECL_ATTRIBUTES (decl)))