aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tcc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/tcc.c b/tcc.c
index 015d403..100db98 100644
--- a/tcc.c
+++ b/tcc.c
@@ -7516,9 +7516,12 @@ static void unary(void)
case '!':
next();
unary();
- if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST)
+ if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) {
+ CType boolean;
+ boolean.t = VT_BOOL;
+ gen_cast(&boolean);
vtop->c.i = !vtop->c.i;
- else if ((vtop->r & VT_VALMASK) == VT_CMP)
+ } else if ((vtop->r & VT_VALMASK) == VT_CMP)
vtop->c.i = vtop->c.i ^ 1;
else {
save_regs(1);