aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2018-07-16 18:03:15 +0000
committerBernd Edlinger <edlinger@gcc.gnu.org>2018-07-16 18:03:15 +0000
commit5828c09abe00cce5ddff7eefef274c48021c72c9 (patch)
tree02407fe16cba02310f6f45f81b7d684f739a7be5 /gcc/builtins.c
parentb8c9cad352b8c40693dd7f6b15aec17bfb37c2a1 (diff)
downloadgcc-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.c4
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