+++ /dev/null
-C Test for bug in reg-stack handling conditional moves.
-C Reported by Tim Prince <tprince@computer.org>
-C
-C { dg-do run { target "i[6789]86-*-*" } }
-C { dg-options "-ffast-math -march=pentiumpro" }
-
- double precision function foo(x, y)
- implicit none
- double precision x, y
- double precision a, b, c, d
- if (x /= y) then
- if (x * y >= 0) then
- a = abs(x)
- b = abs(y)
- c = max(a, b)
- d = min(a, b)
- foo = 1 - d/c
- else
- foo = 1
- end if
- else
- foo = 0
- end if
- end
-
- program test
- implicit none
-
- integer ntests
- parameter (ntests=7)
- double precision tolerance
- parameter (tolerance=1.0D-6)
-
-C Each column is a pair of values to feed to foo,
-C and its expected return value.
- double precision a(ntests) /1, -23, -1, 1, 9, 10, -9/
- double precision b(ntests) /1, -23, 12, -12, 10, 9, -10/
- double precision x(ntests) /0, 0, 1, 1, 0.1, 0.1, 0.1/
-
- double precision foo
- double precision result
- integer i
-
- do i = 1, ntests
- result = foo(a(i), b(i))
- if (abs(result - x(i)) > tolerance) then
- print *, i, a(i), b(i), x(i), result
- call abort
- end if
- end do
- end