Jeroen van Rijn 5 months ago
parent
commit
3a7691c714
1 changed files with 3 additions and 0 deletions
  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)) {