aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/c.h
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-04-18 19:47:33 +0200
committerlemon <lsof@mailbox.org>2026-04-18 19:47:33 +0200
commite243a262720a19224a4ae4a99466808711fb0acd (patch)
treee6693130705647c16337de5615a169ea5478ae77 /src/c.h
parent2e1e513d0cfd3686abb1634824a1503f93f413de (diff)
frontend: GNU statement expressions
Diffstat (limited to 'src/c.h')
-rw-r--r--src/c.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/c.h b/src/c.h
index a0142e7..4e4c7a7 100644
--- a/src/c.h
+++ b/src/c.h
@@ -14,6 +14,7 @@ enum exprkind {
EEQU, ENEQ, ELTH, EGTH, ELTE, EGTE,
ESET, ESETADD, ESETSUB, ESETMUL, ESETDIV, ESETREM, ESETAND, ESETIOR, ESETXOR, ESETSHL, ESETSHR,
ESEQ,
+ EIRVALUE,
};
#define isunop(t) in_range(t, EPLUS, EPOSTDEC)
#define isbinop(t) in_range(t, EADD, ESEQ)
@@ -55,6 +56,7 @@ struct Expr {
bool func : 1, local : 1;
} ssym; /* ESSYMREF (static symbol addr + off) */
Init *init; /* EINIT */
+ struct { uint bits; } irref; /* EIRVALUE */
};
};
@@ -81,6 +83,7 @@ typedef struct {
struct Block *breakto, *loopcont;
struct SwitchStmt *switchstmt;
struct Label *labels;
+ struct Function *fn;
} CComp;
enum storageclass {