diff mbox series

Fix up pr19476-{1,5}.C (PR testsuite/86649)

Message ID 20180724095027.GC17988@tucnak
State New
Headers show
Series Fix up pr19476-{1,5}.C (PR testsuite/86649) | expand

Commit Message

Jakub Jelinek July 24, 2018, 9:50 a.m. UTC
Hi!

When looking at PR86569 testresults, I must have missed these two tests
(but looking at test_summary outputs, I see it now).
When we no longer fold this during cp_fold (to avoid code generation
changes between -Wnonnull-compare and -Wno-nonnull-compare), it isn't
folded from the first pass; with -O2 it is folded during evrp and with
-O1 during dom2.

Note, the test would fail before with -Wnonnull-compare, e.g. on 8
branch (which doesn't have the PR86569 changes), I see:
make check-c++-all RUNTESTFLAGS='--target_board=unix\{,-Wnonnull-compare\} dg.exp=pr19476*'
		=== g++ Summary for unix ===

# of expected passes		72
Running target unix/-Wnonnull-compare
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /usr/src/gcc-8/gcc/testsuite/config/default.exp as tool-and-target-specific interface file.
Running /usr/src/gcc-8/gcc/testsuite/g++.dg/dg.exp ...
FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++98  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++11  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++14  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++17  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++2a  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++17 -fconcepts  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++98  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++11  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++14  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++17  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++2a  scan-tree-dump ccp1 "return 42"
FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++17 -fconcepts  scan-tree-dump ccp1 "return 42"

		=== g++ Summary for unix/-Wnonnull-compare ===

# of expected passes		60
# of unexpected failures	12

Especially for -O2 that people use most, folding it at evrp time seems to be
early enough for me.
Fixed by testing this only in dom2, tested on x86_64-linux, ok for trunk?

2018-07-24  Jakub Jelinek  <jakub@redhat.com>

	PR testsuite/86649
	* g++.dg/tree-ssa-/pr19476-1.C: Check dom2 dump instead of ccp1.
	* g++.dg/tree-ssa-/pr19476-5.C: Likewise.


	Jakub

Comments

Richard Biener July 24, 2018, 10:08 a.m. UTC | #1
On Tue, 24 Jul 2018, Jakub Jelinek wrote:

> Hi!
> 
> When looking at PR86569 testresults, I must have missed these two tests
> (but looking at test_summary outputs, I see it now).
> When we no longer fold this during cp_fold (to avoid code generation
> changes between -Wnonnull-compare and -Wno-nonnull-compare), it isn't
> folded from the first pass; with -O2 it is folded during evrp and with
> -O1 during dom2.
> 
> Note, the test would fail before with -Wnonnull-compare, e.g. on 8
> branch (which doesn't have the PR86569 changes), I see:
> make check-c++-all RUNTESTFLAGS='--target_board=unix\{,-Wnonnull-compare\} dg.exp=pr19476*'
> 		=== g++ Summary for unix ===
> 
> # of expected passes		72
> Running target unix/-Wnonnull-compare
> Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
> Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
> Using /usr/src/gcc-8/gcc/testsuite/config/default.exp as tool-and-target-specific interface file.
> Running /usr/src/gcc-8/gcc/testsuite/g++.dg/dg.exp ...
> FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++98  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++11  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++14  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++17  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++2a  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-1.C  -std=gnu++17 -fconcepts  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++98  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++11  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++14  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++17  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++2a  scan-tree-dump ccp1 "return 42"
> FAIL: g++.dg/tree-ssa/pr19476-5.C  -std=gnu++17 -fconcepts  scan-tree-dump ccp1 "return 42"
> 
> 		=== g++ Summary for unix/-Wnonnull-compare ===
> 
> # of expected passes		60
> # of unexpected failures	12
> 
> Especially for -O2 that people use most, folding it at evrp time seems to be
> early enough for me.
> Fixed by testing this only in dom2, tested on x86_64-linux, ok for trunk?

OK - can you add a variant with -O2 that tests it at EVRP time then?

Thanks,
Richard.

> 2018-07-24  Jakub Jelinek  <jakub@redhat.com>
> 
> 	PR testsuite/86649
> 	* g++.dg/tree-ssa-/pr19476-1.C: Check dom2 dump instead of ccp1.
> 	* g++.dg/tree-ssa-/pr19476-5.C: Likewise.
> 
> --- gcc/testsuite/g++.dg/tree-ssa/pr19476-1.C.jj	2015-05-29 15:04:33.037803445 +0200
> +++ gcc/testsuite/g++.dg/tree-ssa/pr19476-1.C	2018-07-24 11:39:10.108897097 +0200
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O -fdump-tree-ccp1 -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O -fdump-tree-dom2 -fdelete-null-pointer-checks" } */
>  /* { dg-skip-if "" keeps_null_pointer_checks } */
>  
>  // See pr19476-5.C for a version without including <new>.
> @@ -12,5 +12,5 @@ int g(){
>    return 42 + (0 == new int[50]);
>  }
>  
> -/* { dg-final { scan-tree-dump     "return 42" "ccp1" } } */
> -/* { dg-final { scan-tree-dump-not "return 33" "ccp1" } } */
> +/* { dg-final { scan-tree-dump     "return 42" "dom2" } } */
> +/* { dg-final { scan-tree-dump-not "return 33" "dom2" } } */
> --- gcc/testsuite/g++.dg/tree-ssa/pr19476-5.C.jj	2015-05-29 15:04:33.038803430 +0200
> +++ gcc/testsuite/g++.dg/tree-ssa/pr19476-5.C	2018-07-24 11:39:26.190913802 +0200
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O -fdump-tree-ccp1 -fdelete-null-pointer-checks" } */
> +/* { dg-options "-O -fdump-tree-dom2 -fdelete-null-pointer-checks" } */
>  /* { dg-skip-if "" keeps_null_pointer_checks } */
>  
>  // See pr19476-1.C for a version that includes <new>.
> @@ -8,4 +8,4 @@ int g(){
>    return 42 + (0 == new int[50]);
>  }
>  
> -/* { dg-final { scan-tree-dump     "return 42" "ccp1" } } */
> +/* { dg-final { scan-tree-dump     "return 42" "dom2" } } */
> 
> 	Jakub
> 
>
Jakub Jelinek July 24, 2018, 10:25 a.m. UTC | #2
On Tue, Jul 24, 2018 at 12:08:35PM +0200, Richard Biener wrote:
> OK - can you add a variant with -O2 that tests it at EVRP time then?

Here is what I've committed to trunk then:

2018-07-24  Jakub Jelinek  <jakub@redhat.com>

	PR testsuite/86649
	* g++.dg/tree-ssa-/pr19476-1.C: Check dom2 dump instead of ccp1.
	* g++.dg/tree-ssa-/pr19476-5.C: Likewise.
	* g++.dg/tree-ssa-/pr19476-6.C: New test.
	* g++.dg/tree-ssa-/pr19476-7.C: New test.

--- gcc/testsuite/g++.dg/tree-ssa/pr19476-1.C.jj	2015-05-29 15:04:33.037803445 +0200
+++ gcc/testsuite/g++.dg/tree-ssa/pr19476-1.C	2018-07-24 11:39:10.108897097 +0200
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-ccp1 -fdelete-null-pointer-checks" } */
+/* { dg-options "-O -fdump-tree-dom2 -fdelete-null-pointer-checks" } */
 /* { dg-skip-if "" keeps_null_pointer_checks } */
 
 // See pr19476-5.C for a version without including <new>.
@@ -12,5 +12,5 @@ int g(){
   return 42 + (0 == new int[50]);
 }
 
-/* { dg-final { scan-tree-dump     "return 42" "ccp1" } } */
-/* { dg-final { scan-tree-dump-not "return 33" "ccp1" } } */
+/* { dg-final { scan-tree-dump     "return 42" "dom2" } } */
+/* { dg-final { scan-tree-dump-not "return 33" "dom2" } } */
--- gcc/testsuite/g++.dg/tree-ssa/pr19476-5.C.jj	2015-05-29 15:04:33.038803430 +0200
+++ gcc/testsuite/g++.dg/tree-ssa/pr19476-5.C	2018-07-24 11:39:26.190913802 +0200
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-ccp1 -fdelete-null-pointer-checks" } */
+/* { dg-options "-O -fdump-tree-dom2 -fdelete-null-pointer-checks" } */
 /* { dg-skip-if "" keeps_null_pointer_checks } */
 
 // See pr19476-1.C for a version that includes <new>.
@@ -8,4 +8,4 @@ int g(){
   return 42 + (0 == new int[50]);
 }
 
-/* { dg-final { scan-tree-dump     "return 42" "ccp1" } } */
+/* { dg-final { scan-tree-dump     "return 42" "dom2" } } */
--- gcc/testsuite/g++.dg/tree-ssa/pr19476-6.C.jj	2018-07-24 12:09:30.321890628 +0200
+++ gcc/testsuite/g++.dg/tree-ssa/pr19476-6.C	2018-07-24 12:10:49.812987922 +0200
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-evrp -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "" keeps_null_pointer_checks } */
+
+// See pr19476-7.C for a version without including <new>.
+#include <new>
+
+int f(){
+  return 33 + (0 == new(std::nothrow) int);
+}
+int g(){
+  return 42 + (0 == new int[50]);
+}
+
+/* { dg-final { scan-tree-dump     "return 42" "evrp" } } */
+/* { dg-final { scan-tree-dump-not "return 33" "evrp" } } */
--- gcc/testsuite/g++.dg/tree-ssa/pr19476-7.C.jj	2018-07-24 12:09:33.034893945 +0200
+++ gcc/testsuite/g++.dg/tree-ssa/pr19476-7.C	2018-07-24 12:11:03.657004866 +0200
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-evrp -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "" keeps_null_pointer_checks } */
+
+// See pr19476-6.C for a version that includes <new>.
+
+int g(){
+  return 42 + (0 == new int[50]);
+}
+
+/* { dg-final { scan-tree-dump     "return 42" "evrp" } } */


	Jakub
diff mbox series

Patch

--- gcc/testsuite/g++.dg/tree-ssa/pr19476-1.C.jj	2015-05-29 15:04:33.037803445 +0200
+++ gcc/testsuite/g++.dg/tree-ssa/pr19476-1.C	2018-07-24 11:39:10.108897097 +0200
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-ccp1 -fdelete-null-pointer-checks" } */
+/* { dg-options "-O -fdump-tree-dom2 -fdelete-null-pointer-checks" } */
 /* { dg-skip-if "" keeps_null_pointer_checks } */
 
 // See pr19476-5.C for a version without including <new>.
@@ -12,5 +12,5 @@  int g(){
   return 42 + (0 == new int[50]);
 }
 
-/* { dg-final { scan-tree-dump     "return 42" "ccp1" } } */
-/* { dg-final { scan-tree-dump-not "return 33" "ccp1" } } */
+/* { dg-final { scan-tree-dump     "return 42" "dom2" } } */
+/* { dg-final { scan-tree-dump-not "return 33" "dom2" } } */
--- gcc/testsuite/g++.dg/tree-ssa/pr19476-5.C.jj	2015-05-29 15:04:33.038803430 +0200
+++ gcc/testsuite/g++.dg/tree-ssa/pr19476-5.C	2018-07-24 11:39:26.190913802 +0200
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-ccp1 -fdelete-null-pointer-checks" } */
+/* { dg-options "-O -fdump-tree-dom2 -fdelete-null-pointer-checks" } */
 /* { dg-skip-if "" keeps_null_pointer_checks } */
 
 // See pr19476-1.C for a version that includes <new>.
@@ -8,4 +8,4 @@  int g(){
   return 42 + (0 == new int[50]);
 }
 
-/* { dg-final { scan-tree-dump     "return 42" "ccp1" } } */
+/* { dg-final { scan-tree-dump     "return 42" "dom2" } } */