aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2000-03-18 03:26:47 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2000-03-18 03:26:47 +0000
commit82ec9e78291b497ce00d671fe515ba7542df0552 (patch)
tree8d871b91f313a70dc2ebe32e4563645771c56316
parent787ccee0124924e9a03f6e350cb30b6d9924eb50 (diff)
downloadgcc-82ec9e78291b497ce00d671fe515ba7542df0552.zip
gcc-82ec9e78291b497ce00d671fe515ba7542df0552.tar.gz
gcc-82ec9e78291b497ce00d671fe515ba7542df0552.tar.bz2
divconst-2.c: Rewrite to check for standards-compliant result rather than specific constants.
* execute/divconst-2.c: Rewrite to check for standards-compliant result rather than specific constants. Put test-values in array. From-SVN: r32615
-rw-r--r--gcc/testsuite/gcc.c-torture/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/divconst-2.c31
2 files changed, 34 insertions, 2 deletions
diff --git a/gcc/testsuite/gcc.c-torture/ChangeLog b/gcc/testsuite/gcc.c-torture/ChangeLog
index 20499e8..b135529 100644
--- a/gcc/testsuite/gcc.c-torture/ChangeLog
+++ b/gcc/testsuite/gcc.c-torture/ChangeLog
@@ -1,3 +1,8 @@
+Fri Mar 10 01:15:19 2000 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * execute/divconst-2.c: Rewrite to check for standards-compliant
+ result rather than specific constants. Put test-values in array.
+
Sun Mar 5 23:25:12 2000 Hans-Peter Nilsson <hp@bitrange.com>
* execute/20000224-1.c (main): Expected return-value is 1, not
diff --git a/gcc/testsuite/gcc.c-torture/execute/divconst-2.c b/gcc/testsuite/gcc.c-torture/execute/divconst-2.c
index d3adaf3..b58f1bf 100644
--- a/gcc/testsuite/gcc.c-torture/execute/divconst-2.c
+++ b/gcc/testsuite/gcc.c-torture/execute/divconst-2.c
@@ -4,9 +4,36 @@ f (long x)
return x / (-0x7fffffffL - 1L);
}
+long
+r (long x)
+{
+ return x % (-0x7fffffffL - 1L);
+}
+
+/* Since we have a negative divisor, this equation must hold for the
+ results of / and %; no specific results are guaranteed. */
+long
+std_eqn (long num, long denom, long quot, long rem)
+{
+ /* For completeness, a check for "ABS (rem) < ABS (denom)" belongs here,
+ but causes trouble on 32-bit machines and isn't worthwhile. */
+ return quot * (-0x7fffffffL - 1L) + rem == num;
+}
+
+long nums[] =
+{
+ -1L, 0x7fffffffL, -0x7fffffffL - 1L
+};
+
main ()
{
- if (f (-1L) != 0L || f (0x7fffffffL) != 0L || f (-0x7fffffffL - 1L) != 1l)
- abort ();
+ int i;
+
+ for (i = 0;
+ i < sizeof (nums) / sizeof (nums[0]);
+ i++)
+ if (std_eqn (nums[i], -0x7fffffffL - 1L, f (nums[i]), r (nums[i])) == 0)
+ abort ();
+
exit (0);
}