From 3124ea56589f809bf64c43e9924fb82df21ad765 Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Wed, 31 Oct 2007 14:05:48 +0000 Subject: Fixed NaN compilation problems. --- src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala index 63f4daed46..c19ec8f494 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala @@ -894,8 +894,12 @@ abstract class GenJVM extends SubComponent { case _ => (kind: @unchecked) match { case LONG => jcode.emitLCMP() - case FLOAT => jcode.emitFCMPG() - case DOUBLE => jcode.emitDCMPG() + case FLOAT => + if (cond == LT || cond == LE) jcode.emitFCMPG() + else jcode.emitFCMPL() + case DOUBLE => + if (cond == LT || cond == LE) jcode.emitDCMPG() + else jcode.emitDCMPL() } if (nextBlock == success) { jcode.emitIF(conds(negate(cond)), labels(failure)); @@ -930,8 +934,14 @@ abstract class GenJVM extends SubComponent { case _ => (kind: @unchecked) match { case LONG => jcode.emitLCONST_0(); jcode.emitLCMP() - case FLOAT => jcode.emitFCONST_0(); jcode.emitFCMPL() - case DOUBLE => jcode.emitDCONST_0(); jcode.emitDCMPL() + case FLOAT => + jcode.emitFCONST_0(); + if (cond == LT || cond == LE) jcode.emitFCMPG() + else jcode.emitFCMPL() + case DOUBLE => + jcode.emitDCONST_0(); + if (cond == LT || cond == LE) jcode.emitDCMPG() + else jcode.emitDCMPL() } if (nextBlock == success) { jcode.emitIF(conds(negate(cond)), labels(failure)) -- cgit v1.2.3