LLVM: fix int_to_float signedness detection

It was checking if the result (float) type was a signed int rather than
checking the operand (integer) type.
This commit is contained in:
Andrew Kelley
2022-03-13 22:22:19 -07:00
parent d42d31f72f
commit 7a477a1110

View File

@@ -3709,10 +3709,11 @@ pub const FuncGen = struct {
const ty_op = self.air.instructions.items(.data)[inst].ty_op;
const operand = try self.resolveInst(ty_op.operand);
const operand_ty = self.air.typeOf(ty_op.operand);
const dest_ty = self.air.typeOfIndex(inst);
const dest_llvm_ty = try self.dg.llvmType(dest_ty);
if (dest_ty.isSignedInt()) {
if (operand_ty.isSignedInt()) {
return self.builder.buildSIToFP(operand, dest_llvm_ty, "");
} else {
return self.builder.buildUIToFP(operand, dest_llvm_ty, "");