diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2018-07-16 18:03:15 +0000 |
---|---|---|
committer | Bernd Edlinger <edlinger@gcc.gnu.org> | 2018-07-16 18:03:15 +0000 |
commit | 5828c09abe00cce5ddff7eefef274c48021c72c9 (patch) | |
tree | 02407fe16cba02310f6f45f81b7d684f739a7be5 /gcc/builtins.c | |
parent | b8c9cad352b8c40693dd7f6b15aec17bfb37c2a1 (diff) | |
download | gcc-5828c09abe00cce5ddff7eefef274c48021c72c9.zip gcc-5828c09abe00cce5ddff7eefef274c48021c72c9.tar.gz gcc-5828c09abe00cce5ddff7eefef274c48021c72c9.tar.bz2 |
re PR middle-end/86528 (strlen of constant string malfunction -- had to back out fix for PR middle-end/77357)
gcc:
2018-07-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/86528
* builtins.c (check_access): Bail out if range[0] is no INTEGER_CST.
* expr.c (string_constant): Fix the element size of ARRAY_TYPE.
testsuite:
2018-07-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/86528
* gcc.c-torture/execute/pr86528.c: New test.
* gcc.dg/Wrestrict-10.c (test_arr_strcat_2): Fix typo.
From-SVN: r262742
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 839a818..c041641 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -3192,6 +3192,10 @@ check_access (tree exp, tree, tree, tree dstwrite, if (dstwrite) get_size_range (dstwrite, range); + /* This can happen at -O0. */ + if (range[0] && TREE_CODE (range[0]) != INTEGER_CST) + return false; + tree func = get_callee_fndecl (exp); /* First check the number of bytes to be written against the maximum |