From be2627c8421b21cad71ff69257faf14fe2dba750 Mon Sep 17 00:00:00 2001 From: Homer Hsing Date: Mon, 4 Nov 2013 09:39:33 +0800 Subject: [PATCH] fix operators for 64 bit integer if operand is signed 64 bit integer, emit -1 for SExt casting Signed-off-by: Homer Hsing Reviewed-by: Zhigang Gong --- backend/src/llvm/llvm_gen_backend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp index 6f4ed72..b824bf9 100644 --- a/backend/src/llvm/llvm_gen_backend.cpp +++ b/backend/src/llvm/llvm_gen_backend.cpp @@ -1694,7 +1694,7 @@ namespace gbe const ir::ImmediateIndex zero = ctx.newIntegerImmediate(0, dstType); ir::ImmediateIndex one; if (I.getOpcode() == Instruction::SExt - && (dstType == ir::TYPE_S8 || dstType == ir::TYPE_S16 || dstType == ir::TYPE_S32)) + && (dstType == ir::TYPE_S8 || dstType == ir::TYPE_S16 || dstType == ir::TYPE_S32 || dstType == ir::TYPE_S64)) one = ctx.newIntegerImmediate(-1, dstType); else one = ctx.newIntegerImmediate(1, dstType); -- 2.7.4