From 3fbde00eee1298feec4051f103c1014fe5819ede Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 6 Jan 2016 03:52:49 -0700 Subject: codegen: fix lshr/ashr not looking at int sign --- src/codegen.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/codegen.cpp') diff --git a/src/codegen.cpp b/src/codegen.cpp index 2264b08191..a69f9e30b8 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -542,8 +542,11 @@ static LLVMValueRef gen_arithmetic_bin_op(CodeGen *g, AstNode *source_node, return LLVMBuildShl(g->builder, val1, val2, ""); case BinOpTypeBitShiftRight: case BinOpTypeAssignBitShiftRight: + assert(op1_type->id == TypeTableEntryIdInt); + assert(op2_type->id == TypeTableEntryIdInt); + add_debug_source_node(g, source_node); - if (op1_type->id == TypeTableEntryIdInt) { + if (op1_type->data.integral.is_signed) { return LLVMBuildAShr(g->builder, val1, val2, ""); } else { return LLVMBuildLShr(g->builder, val1, val2, ""); -- cgit v1.2.3