aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2019-06-26 12:00:00 -0600
committerJeff Law <law@gcc.gnu.org>2019-06-26 12:00:00 -0600
commit4a61cf9c62212fd04f21704efc2decffe9544651 (patch)
tree8a77e9e1bb86fbebcf8adcaa6f027ce901a2a13b
parentf363fc5b49cb83aa98d89efa98fe42f57af4de05 (diff)
downloadgcc-4a61cf9c62212fd04f21704efc2decffe9544651.zip
gcc-4a61cf9c62212fd04f21704efc2decffe9544651.tar.gz
gcc-4a61cf9c62212fd04f21704efc2decffe9544651.tar.bz2
tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of memcpy, memmove and memset builtins.
* tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of memcpy, memmove and memset builtins. (maybe_trim_memstar_call): Likewise. * gcc.c-torture/execute/builtins/builtins.exp: Add -fno-tree-dse as DSE compromises several of these tests. * gcc.dg/builtin-stringop-chk-1.c: Similarly. * gcc.dg/memcpy-2.c: Similarly. * gcc.dg/pr40340-1.c: Similarly. * gcc.dg/pr40340-2.c: Similarly. * gcc.dg/pr40340-5.c: Similarly. From-SVN: r272704
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog10
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp2
-rw-r--r--gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/memcpy-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr40340-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr40340-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr40340-5.c2
-rw-r--r--gcc/tree-ssa-dse.c9
9 files changed, 31 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c039e62..af5afa6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-06-26 Jeff Law <law@redhat.com>
+
+ * tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of
+ memcpy, memmove and memset builtins.
+ (maybe_trim_memstar_call): Likewise.
+
2019-06-26 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/rs6000-logue.c: Add #ifndef TARGET_PROFILE_KERNEL.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e53ebc1..eb9f6cc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2019-06-26 Jeff Law <law@redhat.com>
+
+ * gcc.c-torture/execute/builtins/builtins.exp: Add -fno-tree-dse
+ as DSE compromises several of these tests.
+ * gcc.dg/builtin-stringop-chk-1.c: Similarly.
+ * gcc.dg/memcpy-2.c: Similarly.
+ * gcc.dg/pr40340-1.c: Similarly.
+ * gcc.dg/pr40340-2.c: Similarly.
+ * gcc.dg/pr40340-5.c: Similarly.
+
2019-06-26 Steven G. Kargl <kargl@gcc.gnu.org>
PR Fortran/90988
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp b/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
index 5e899d5..fb9d3ec 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
@@ -37,7 +37,7 @@ load_lib c-torture.exp
torture-init
set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS
-set additional_flags "-fno-tree-loop-distribute-patterns -fno-tracer"
+set additional_flags "-fno-tree-dse -fno-tree-loop-distribute-patterns -fno-tracer"
if [istarget "powerpc-*-darwin*"] {
lappend additional_flags "-Wl,-multiply_defined,suppress"
}
diff --git a/gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c b/gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c
index afd07dd..40cfa04 100644
--- a/gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c
+++ b/gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c
@@ -1,7 +1,7 @@
/* Test whether buffer overflow warnings for __*_chk builtins
are emitted properly. */
/* { dg-do compile } */
-/* { dg-options "-O2 -Wno-format -std=gnu99 -ftrack-macro-expansion=0" } */
+/* { dg-options "-O2 -Wno-format -std=gnu99 -ftrack-macro-expansion=0 -fno-tree-dse" } */
// { dg-skip-if "packed attribute missing for t" { "epiphany-*-*" } }
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/memcpy-2.c b/gcc/testsuite/gcc.dg/memcpy-2.c
index 7f839d2..6ad8874 100644
--- a/gcc/testsuite/gcc.dg/memcpy-2.c
+++ b/gcc/testsuite/gcc.dg/memcpy-2.c
@@ -1,6 +1,6 @@
/* PR middle-end/38454 */
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -fno-tree-dse" } */
typedef __SIZE_TYPE__ size_t;
diff --git a/gcc/testsuite/gcc.dg/pr40340-1.c b/gcc/testsuite/gcc.dg/pr40340-1.c
index 8fbb206..6307e06 100644
--- a/gcc/testsuite/gcc.dg/pr40340-1.c
+++ b/gcc/testsuite/gcc.dg/pr40340-1.c
@@ -1,6 +1,6 @@
/* PR middle-end/40340 */
/* { dg-do compile } */
-/* { dg-options "-O2 -Wall -Wno-system-headers" } */
+/* { dg-options "-O2 -Wall -Wno-system-headers -fno-tree-dse" } */
#include "pr40340.h"
diff --git a/gcc/testsuite/gcc.dg/pr40340-2.c b/gcc/testsuite/gcc.dg/pr40340-2.c
index 10083ac..ea76e10 100644
--- a/gcc/testsuite/gcc.dg/pr40340-2.c
+++ b/gcc/testsuite/gcc.dg/pr40340-2.c
@@ -1,6 +1,6 @@
/* PR middle-end/40340 */
/* { dg-do compile } */
-/* { dg-options "-O2 -Wall -Wno-system-headers" } */
+/* { dg-options "-O2 -Wall -Wno-system-headers -fno-tree-dse" } */
#include "pr40340.h"
diff --git a/gcc/testsuite/gcc.dg/pr40340-5.c b/gcc/testsuite/gcc.dg/pr40340-5.c
index 0e48a2c..99e58f2 100644
--- a/gcc/testsuite/gcc.dg/pr40340-5.c
+++ b/gcc/testsuite/gcc.dg/pr40340-5.c
@@ -1,6 +1,6 @@
/* PR middle-end/40340 */
/* { dg-do compile } */
-/* { dg-options "-O2 -Wall -Wsystem-headers -g" } */
+/* { dg-options "-O2 -Wall -Wsystem-headers -g -fno-tree-dse" } */
#define TEST3
#include "pr40340.h"
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c
index aa998f4..ea71f49 100644
--- a/gcc/tree-ssa-dse.c
+++ b/gcc/tree-ssa-dse.c
@@ -98,6 +98,9 @@ initialize_ao_ref_for_dse (gimple *stmt, ao_ref *write)
case BUILT_IN_MEMCPY:
case BUILT_IN_MEMMOVE:
case BUILT_IN_MEMSET:
+ case BUILT_IN_MEMCPY_CHK:
+ case BUILT_IN_MEMMOVE_CHK:
+ case BUILT_IN_MEMSET_CHK:
{
tree size = NULL_TREE;
if (gimple_call_num_args (stmt) == 3)
@@ -434,6 +437,8 @@ maybe_trim_memstar_call (ao_ref *ref, sbitmap live, gimple *stmt)
{
case BUILT_IN_MEMCPY:
case BUILT_IN_MEMMOVE:
+ case BUILT_IN_MEMCPY_CHK:
+ case BUILT_IN_MEMMOVE_CHK:
{
int head_trim, tail_trim;
compute_trims (ref, live, &head_trim, &tail_trim, stmt);
@@ -455,6 +460,7 @@ maybe_trim_memstar_call (ao_ref *ref, sbitmap live, gimple *stmt)
}
case BUILT_IN_MEMSET:
+ case BUILT_IN_MEMSET_CHK:
{
int head_trim, tail_trim;
compute_trims (ref, live, &head_trim, &tail_trim, stmt);
@@ -860,6 +866,9 @@ dse_dom_walker::dse_optimize_stmt (gimple_stmt_iterator *gsi)
case BUILT_IN_MEMCPY:
case BUILT_IN_MEMMOVE:
case BUILT_IN_MEMSET:
+ case BUILT_IN_MEMCPY_CHK:
+ case BUILT_IN_MEMMOVE_CHK:
+ case BUILT_IN_MEMSET_CHK:
{
/* Occasionally calls with an explicit length of zero
show up in the IL. It's pointless to do analysis