diff options
| -rw-r--r-- | test/458-long-to-fpu/info.txt | 2 | ||||
| -rw-r--r-- | test/458-long-to-fpu/src/Main.java | 25 |
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; } |