diff options
author | Martin Sebor <msebor@redhat.com> | 2018-07-25 02:11:31 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2018-07-24 20:11:31 -0600 |
commit | bfb9bd47b2daac0a01c561effac1d8244ddd99f6 (patch) | |
tree | bf72d7afae065152f74b4f862adffad1c954d61e /gcc/builtins.h | |
parent | ae752f020fd86b2d34a1556124dc4e5f01a8dcce (diff) | |
download | gcc-bfb9bd47b2daac0a01c561effac1d8244ddd99f6.zip gcc-bfb9bd47b2daac0a01c561effac1d8244ddd99f6.tar.gz gcc-bfb9bd47b2daac0a01c561effac1d8244ddd99f6.tar.bz2 |
PR tree-optimization/86622 - incorrect strlen of array of array plus variable offset
PR tree-optimization/86622 - incorrect strlen of array of array plus variable offset
PR tree-optimization/86532 - Wrong code due to a wrong strlen folding starting with r262522
gcc/ChangeLog:
PR tree-optimization/86622
PR tree-optimization/86532
* builtins.h (string_length): Declare.
* builtins.c (c_strlen): Correct handling of non-constant offsets.
(check_access): Be prepared for non-constant length ranges.
(string_length): Make extern.
* expr.c (string_constant): Only handle the minor non-constant
array index. Use string_constant to compute the length of
a generic string constant.
gcc/testsuite/ChangeLog:
PR tree-optimization/86622
PR tree-optimization/86532
* gcc.c-torture/execute/strlen-2.c: New test.
* gcc.c-torture/execute/strlen-3.c: New test.
* gcc.c-torture/execute/strlen-4.c: New test.
From-SVN: r262958
Diffstat (limited to 'gcc/builtins.h')
-rw-r--r-- | gcc/builtins.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/builtins.h b/gcc/builtins.h index c922904..2e0a2f9 100644 --- a/gcc/builtins.h +++ b/gcc/builtins.h @@ -57,6 +57,7 @@ extern unsigned int get_object_alignment (tree); extern bool get_pointer_alignment_1 (tree, unsigned int *, unsigned HOST_WIDE_INT *); extern unsigned int get_pointer_alignment (tree); +extern unsigned string_length (const void*, unsigned, unsigned); extern tree c_strlen (tree, int); extern void expand_builtin_setjmp_setup (rtx, rtx); extern void expand_builtin_setjmp_receiver (rtx); |