So a couple of things can come into play that make this test target
dependent.

First, on some targets we emit a loop to zero the objects.  Thankfully
we can use -Os which gets us an empty constructor node again.  That
seems to make several unhappy targets happy again.

On i?86 (and perhaps other targets), the redundant store isn't exposed
until a late inlining, which means we need to check dse2 rather than
dse1 for the message that it deleted a redundant store.

Installing on the trunk,

Jeff

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 55deef7255d..9bb683facbd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-07-02  Jeff Law  <l...@redhat.com>
+
+       PR tree-optimization/90883
+       * g++.dg/tree-ssa/pr90883.c: Add -Os.  Check dse2 for the
+       deleted store on some targets.
+
 2019-07-02  qing zhao  <qing.z...@oracle.com>
 
        PR preprocessor/90581
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr90883.C 
b/gcc/testsuite/g++.dg/tree-ssa/pr90883.C
index 005b2103b4b..c5faffa1f32 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr90883.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr90883.C
@@ -1,4 +1,4 @@
-// { dg-options "-O2 -fdump-tree-dse1-details -std=c++11" }
+// { dg-options "-O2 -Os -fdump-tree-dse-details -std=c++11" }
 
 
     class C
@@ -15,5 +15,6 @@
 
 // We want to match enough here to capture that we deleted an empty
 // constructor store
-// { dg-final { scan-tree-dump "Deleted redundant store: .*\.a = {}" "dse1" } }
+// { dg-final { scan-tree-dump "Deleted redundant store: .*\.a = {}" "dse1" { 
target { ! i?86-*-* } } } }
+// { dg-final { scan-tree-dump "Deleted redundant store: .*\.a = {}" "dse2" { 
target i?86-*-* } } }
 

Reply via email to