summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhutchinsonandy <hutchinsonandy@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-19 22:08:25 +0000
committerhutchinsonandy <hutchinsonandy@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-19 22:08:25 +0000
commit762bb55723dd360b4381a2ea3180482ee601a2b8 (patch)
treeb4bdc31d124b153e6f053a2fc9d5e628af5e296f
parentc0043d0647d83519595064a05606d8150dcde4e3 (diff)
downloadppe42-gcc-762bb55723dd360b4381a2ea3180482ee601a2b8.tar.gz
ppe42-gcc-762bb55723dd360b4381a2ea3180482ee601a2b8.zip
* lib/target-supports.exp(check_effective_target_keeps_null_pointer_checks): New function.
* gcc.dg/tree-ssa/20030730-1.c: Use keeps_null_pointer_checks to determine correct test response. * gcc.dg/tree-ssa/20030730-2.c: Ditto. * gcc.dg/tree-ssa/pr20701.c: Ditto. * gcc.dg/tree-ssa/pr20702.c: Ditto. * gcc.dg/tree-ssa/pr21086.c: Ditto. * gcc.dg/tree-ssa/vrp02.c:: Ditto. * gcc.dg/tree-ssa/vrp07.c:: Ditto. * gcc.dg/tree-ssa/vrp08.c:: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136970 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog14
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c7
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr20701.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr20702.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr21086.c7
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp02.c5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp07.c9
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/vrp08.c7
-rw-r--r--gcc/testsuite/lib/target-supports.exp14
10 files changed, 59 insertions, 17 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f6c537f957b..f712d104183 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,19 @@
2008-06-19 Andy Hutchinson <hutchinsonandy@aim.com>
+ * lib/target-supports.exp
+ (check_effective_target_keeps_null_pointer_checks) : New function.
+ * gcc.dg/tree-ssa/20030730-1.c: Use keeps_null_pointer_checks to
+ determine correct test response.
+ * gcc.dg/tree-ssa/20030730-2.c: Ditto.
+ * gcc.dg/tree-ssa/pr20701.c: Ditto.
+ * gcc.dg/tree-ssa/pr20702.c: Ditto.
+ * gcc.dg/tree-ssa/pr21086.c: Ditto.
+ * gcc.dg/tree-ssa/vrp02.c:: Ditto.
+ * gcc.dg/tree-ssa/vrp07.c:: Ditto.
+ * gcc.dg/tree-ssa/vrp08.c:: Ditto.
+
+2008-06-19 Andy Hutchinson <hutchinsonandy@aim.com>
+
* gcc.dg/pragma-pack-4.c: Skip for AVR target.
2008-06-18 Andy Hutchinson <hutchinsonandy@aim.com>
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c
index ded6ef76469..f8ee97c7213 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c
@@ -18,7 +18,8 @@ foo (int attr_kind, unsigned long offset)
exit (0);
}
-/* There should be no IF conditionals. */
-/* { dg-final { scan-tree-dump-times "if " 0 "dom3" } } */
-
+/* There should be no IF conditionals, unless target has fno-delete-null-pointer-checks */
+/* { dg-final { scan-tree-dump-times "if " 0 "dom3" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump "if " "dom3" { target { keeps_null_pointer_checks } } } } */
+
/* { dg-final { cleanup-tree-dump "dom3" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c b/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c
index 8b53d818d27..90359ed8cc7 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c
@@ -18,7 +18,8 @@ foo (int attr_kind, unsigned long offset)
exit (0);
}
-/* There should be no IF conditionals. */
-/* { dg-final { scan-tree-dump-times "if " 0 "dom3" } } */
+/* There should be no IF conditionals, unless target has fno-delete-null-pointer-checks */
+/* { dg-final { scan-tree-dump-times "if " 0 "dom3" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump "if " "dom3" { target { keeps_null_pointer_checks } } } } */
/* { dg-final { cleanup-tree-dump "dom3" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c b/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c
index 6721155fc9a..d20b1022f0b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c
@@ -35,5 +35,7 @@ can_combine_p (rtx insn, rtx elt)
return 0;
}
-/* { dg-final { scan-tree-dump-times "Folding predicate.*to 0" 1 "vrp2" } } */
+/* Target with fno-delete-null-pointer-checks should not fold checks */
+/* { dg-final { scan-tree-dump-times "Folding predicate.*to 0" 1 "vrp2" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-times "Folding predicate.*to 0" 0 "vrp2" { target { keeps_null_pointer_checks } } } } */
/* { dg-final { cleanup-tree-dump "vrp2" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c b/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c
index 0e1b4e6d3be..ce62fa3f0f9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c
@@ -25,5 +25,7 @@ foo (int *p, int b)
return a;
}
-/* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp1"} } */
+/* Target with fno-delete-null-pointer-checks should not fold checks */
+/* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-times "Folding predicate" 0 "vrp1" { target { keeps_null_pointer_checks } } } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
index ffaccefe94c..2409608d9da 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
@@ -15,6 +15,9 @@ foo (int *p)
return 0;
}
-/* { dg-final { scan-tree-dump-times "Folding predicate " 1 "vrp1" } } */
-/* { dg-final { scan-tree-dump-not "b_. =" "vrp1" } } */
+/* Target with fno-delete-null-pointer-checks should not fold checks */
+/* { dg-final { scan-tree-dump-times "Folding predicate " 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-times "Folding predicate " 0 "vrp1" { target { keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-not "b_. =" "vrp1" { target { ! avr-*-* } } } } */
+/* { dg-final { scan-tree-dump "b_. =" "vrp1" { target { avr-*-* } } } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
index d5cd775aaaf..56fca97116c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
@@ -19,6 +19,7 @@ foo (struct A *p, struct A *q)
if (p)
return x + p->b;
}
-
-/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" } } */
+/* Target with fno-delete-null-pointer-checks should not fold check */
+/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 0 "vrp1" { target { keeps_null_pointer_checks } } } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
index 1bff5712bca..6584919b560 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
@@ -29,8 +29,11 @@ foo (int i, int *p)
return i;
}
-
+/* Target with fno-delete-null-pointer-checks should not fold checks */
/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" } } */
-/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 0" 1 "vrp1" } } */
-/* { dg-final { scan-tree-dump-times "PREDICATE: p_\[0-9\]" 2 "vrp1" } } */
+/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 0" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 0" 0 "vrp1" { target { keeps_null_pointer_checks } } } } */
+
+/* { dg-final { scan-tree-dump-times "PREDICATE: p_\[0-9\]" 2 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-times "PREDICATE: p_\[0-9\]" 1 "vrp1" { target { keeps_null_pointer_checks } } } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
index 5268e181c2c..193199fbf70 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
@@ -17,7 +17,8 @@ foo (int a, int *p)
return a;
}
-
-/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" } } */
-/* { dg-final { scan-tree-dump-times "PREDICATE: p_.* ne_expr 0" 1 "vrp1" } } */
+/* Target with fno-delete-null-pointer-checks should not fold checks */
+/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-times "PREDICATE: p_.* ne_expr 0" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+/* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 0 "vrp1" { target { keeps_null_pointer_checks } } } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 5986c7bad4b..223ee16d9ee 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -398,6 +398,20 @@ proc check_effective_target_trampolines { } {
return 1
}
+# Return 1 if according to target_info struct and explicit target list
+# target is supposed to keep null pointer checks. This could be due to
+# use of option fno-delete-null-pointer-checks or hardwired in target.
+
+proc check_effective_target_keeps_null_pointer_checks { } {
+ if [target_info exists keeps_null_pointer_checks] {
+ return 1
+ }
+ if { [istarget avr-*-*] } {
+ return 1;
+ }
+ return 0
+}
+
# Return true if profiling is supported on the target.
proc check_profiling_available { test_what } {
OpenPOWER on IntegriCloud