From 830cf3293387ce41325d32308d024ad273ba4ef0 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Tue, 9 Aug 2022 15:40:31 -0700 Subject: Implement C23 predefined bool constants --- expr.c | 6 ++++++ test/const-false.c | 2 ++ test/const-false.qbe | 1 + test/const-true.c | 2 ++ test/const-true.qbe | 1 + 5 files changed, 12 insertions(+) create mode 100644 test/const-false.c create mode 100644 test/const-false.qbe create mode 100644 test/const-true.c create mode 100644 test/const-true.qbe diff --git a/expr.c b/expr.c index 1fe280c..1423248 100644 --- a/expr.c +++ b/expr.c @@ -688,6 +688,12 @@ primaryexpr(struct scope *s) } next(); break; + case TTRUE: + case TFALSE: + e = mkexpr(EXPRCONST, &typebool, NULL); + e->u.constant.u = tok.kind == TTRUE; + next(); + break; case TLPAREN: next(); e = expr(s); diff --git a/test/const-false.c b/test/const-false.c new file mode 100644 index 0000000..65e743d --- /dev/null +++ b/test/const-false.c @@ -0,0 +1,2 @@ +bool x = false; +typeof(false) x; diff --git a/test/const-false.qbe b/test/const-false.qbe new file mode 100644 index 0000000..90a4475 --- /dev/null +++ b/test/const-false.qbe @@ -0,0 +1 @@ +export data $x = align 1 { b 0, } diff --git a/test/const-true.c b/test/const-true.c new file mode 100644 index 0000000..971963f --- /dev/null +++ b/test/const-true.c @@ -0,0 +1,2 @@ +bool x = true; +typeof(true) x; diff --git a/test/const-true.qbe b/test/const-true.qbe new file mode 100644 index 0000000..4fe9ed9 --- /dev/null +++ b/test/const-true.qbe @@ -0,0 +1 @@ +export data $x = align 1 { b 1, } -- cgit v1.2.3