Jeroen van Rijn 5 月之前
父节点
当前提交
3a7691c714
共有 1 个文件被更改,包括 3 次插入0 次删除
  1. 3 0
      src/llvm_backend_expr.cpp

+ 3 - 0
src/llvm_backend_expr.cpp

@@ -222,6 +222,7 @@ gb_internal lbValue lb_emit_unary_arith(lbProcedure *p, TokenKind op, lbValue x,
 		return lb_emit_byte_swap(p, res, type);
 	}
 
+	Type* bt = base_type(type);
 	lbValue res = {};
 
 	switch (op) {
@@ -233,6 +234,8 @@ gb_internal lbValue lb_emit_unary_arith(lbProcedure *p, TokenKind op, lbValue x,
 	case Token_Sub: // Number negation
 		if (is_type_integer(x.type)) {
 			res.value = LLVMBuildNeg(p->builder, x.value, "");
+		} else if (op == Token_Sub && bt->kind == Type_Enum && is_type_integer(bt->Enum.base_type)) {
+			res.value = LLVMBuildNeg(p->builder, x.value, "");
 		} else if (is_type_float(x.type)) {
 			res.value = LLVMBuildFNeg(p->builder, x.value, "");
 		} else if (is_type_complex(x.type)) {