# HG changeset patch # User Josef Eisl # Date 1432212960 -7200 # Node ID 9c88f3f5caa0552362fda884b25a676b5f4bc313 # Parent 006d8ddb7ef9d9d7367998f3d2cbafba5a0ca39c SPARCLIRGenerator: create new variables for I2F and L2D converting. diff -r 006d8ddb7ef9 -r 9c88f3f5caa0 graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java --- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Thu May 21 13:28:41 2015 +0200 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Thu May 21 14:56:00 2015 +0200 @@ -852,9 +852,10 @@ case F2D: return emitConvert2Op(LIRKind.derive(inputVal).changeType(Kind.Double), F2D, input); case I2F: { - AllocatableValue convertedFloatReg = newVariable(LIRKind.derive(input).changeType(Kind.Float)); - moveBetweenFpGp(convertedFloatReg, input); - append(new Unary2Op(I2F, convertedFloatReg, convertedFloatReg)); + AllocatableValue intEncodedFloatReg = newVariable(LIRKind.derive(input).changeType(Kind.Float)); + moveBetweenFpGp(intEncodedFloatReg, input); + AllocatableValue convertedFloatReg = newVariable(intEncodedFloatReg.getLIRKind()); + append(new Unary2Op(I2F, convertedFloatReg, intEncodedFloatReg)); return convertedFloatReg; } case I2D: { @@ -867,9 +868,10 @@ return convertedDoubleReg; } case L2D: { - AllocatableValue convertedDoubleReg = newVariable(LIRKind.derive(input).changeType(Kind.Double)); - moveBetweenFpGp(convertedDoubleReg, input); - append(new Unary2Op(L2D, convertedDoubleReg, convertedDoubleReg)); + AllocatableValue longEncodedDoubleReg = newVariable(LIRKind.derive(input).changeType(Kind.Double)); + moveBetweenFpGp(longEncodedDoubleReg, input); + AllocatableValue convertedDoubleReg = newVariable(longEncodedDoubleReg.getLIRKind()); + append(new Unary2Op(L2D, convertedDoubleReg, longEncodedDoubleReg)); return convertedDoubleReg; } case D2I: {