diff options
author | msebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4> | 2018-05-15 21:52:16 +0000 |
---|---|---|
committer | msebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4> | 2018-05-15 21:52:16 +0000 |
commit | a20cbb58c557bdc08fd6ddaa457eac1fea3ccda8 (patch) | |
tree | 10e11bad25a9ba1a4554e39dcfae31ec8bfc2f17 /gcc/calls.c | |
parent | 0dbcf2c2b2e4e778d17fddc22b6a5c0b500fff50 (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.c | 6 |
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))) |