Jeroen van Rijn 5 bulan lalu
induk
melakukan
3a7691c714
1 mengubah file dengan 3 tambahan dan 0 penghapusan
  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);
 		return lb_emit_byte_swap(p, res, type);
 	}
 	}
 
 
+	Type* bt = base_type(type);
 	lbValue res = {};
 	lbValue res = {};
 
 
 	switch (op) {
 	switch (op) {
@@ -233,6 +234,8 @@ gb_internal lbValue lb_emit_unary_arith(lbProcedure *p, TokenKind op, lbValue x,
 	case Token_Sub: // Number negation
 	case Token_Sub: // Number negation
 		if (is_type_integer(x.type)) {
 		if (is_type_integer(x.type)) {
 			res.value = LLVMBuildNeg(p->builder, x.value, "");
 			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)) {
 		} else if (is_type_float(x.type)) {
 			res.value = LLVMBuildFNeg(p->builder, x.value, "");
 			res.value = LLVMBuildFNeg(p->builder, x.value, "");
 		} else if (is_type_complex(x.type)) {
 		} else if (is_type_complex(x.type)) {