Commit 3fbde00eee

Andrew Kelley <superjoe30@gmail.com>
2016-01-06 11:52:49
codegen: fix lshr/ashr not looking at int sign
1 parent f751a85
Changed files (1)
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, "");