summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/458-long-to-fpu/info.txt2
-rw-r--r--test/458-long-to-fpu/src/Main.java25
2 files changed, 15 insertions, 12 deletions
diff --git a/test/458-long-to-fpu/info.txt b/test/458-long-to-fpu/info.txt
index 7459cfb0d7..cf51df5c77 100644
--- a/test/458-long-to-fpu/info.txt
+++ b/test/458-long-to-fpu/info.txt
@@ -1,2 +1,2 @@
Regression test for x86's code generator, which had a bug in
-the long-to-float and long-to-double implementations.
+the long-to-float and long-to-double implementations.
diff --git a/test/458-long-to-fpu/src/Main.java b/test/458-long-to-fpu/src/Main.java
index a8b6e78200..d1615dca31 100644
--- a/test/458-long-to-fpu/src/Main.java
+++ b/test/458-long-to-fpu/src/Main.java
@@ -16,27 +16,30 @@
public class Main {
public static void main(String[] args) {
- System.out.println(floatConvert(false));
- System.out.println(doubleConvert(false));
+ System.out.println($noinline$FloatConvert(false));
+ System.out.println($noinline$DoubleConvert(false));
}
- public static long floatConvert(boolean flag) {
- if (flag) {
- // Try defeating inlining.
- floatConvert(false);
+ // A dummy value to defeat inlining of these routines.
+ static boolean doThrow = false;
+
+ public static long $noinline$FloatConvert(boolean flag) {
+ // Try defeating inlining.
+ if (doThrow) {
+ throw new Error();
}
long l = myLong;
myFloat = (float)l;
return l;
}
- public static long doubleConvert(boolean flag) {
- if (flag) {
- // Try defeating inlining.
- floatConvert(false);
+ public static long $noinline$DoubleConvert(boolean flag) {
+ // Try defeating inlining.
+ if (doThrow) {
+ throw new Error();
}
long l = myLong;
- myFloat = (float)l;
+ myDouble = (double)l;
return l;
}