From 2b7aae3b44f7134dcdb6b4b5f22067de9d1a8315 Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 2 Oct 1991 13:03:31 +0000 Subject: [PATCH] Added support for volatile --- util/ego/cs/cs_partit.c | 2 +- util/ego/cs/cs_vnm.c | 1 + util/ego/il/il1_anal.c | 3 +++ util/ego/share/locals.c | 4 ++++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/util/ego/cs/cs_partit.c b/util/ego/cs/cs_partit.c index 256b66177..4d36b5be6 100644 --- a/util/ego/cs/cs_partit.c +++ b/util/ego/cs/cs_partit.c @@ -122,7 +122,7 @@ STATIC struct { /* mon */ HOPELESS, XXX, XXX, XXX, XXX, /* ngf */ UNAIR_OP, ARGW, XXX, ARGW, FLT, /* ngi */ UNAIR_OP, ARGW, XXX, ARGW, ANY, -/* nop */ IGNORE, XXX, XXX, XXX, XXX, +/* nop */ HOPELESS, XXX, XXX, XXX, XXX, /* rck */ BBLOCK_END, XXX, XXX, XXX, XXX, /* ret */ BBLOCK_END, XXX, XXX, XXX, XXX, /* rmi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, diff --git a/util/ego/cs/cs_vnm.c b/util/ego/cs/cs_vnm.c index 62bc13935..ad4911e37 100644 --- a/util/ego/cs/cs_vnm.c +++ b/util/ego/cs/cs_vnm.c @@ -267,6 +267,7 @@ hopeless(instr) break; case op_mon: case op_str: + case op_nop: /* for volatiles */ /* We can't even trust "static" entities. */ kill_all(); clr_stack(); diff --git a/util/ego/il/il1_anal.c b/util/ego/il/il1_anal.c index 996f57bdd..575912a03 100644 --- a/util/ego/il/il1_anal.c +++ b/util/ego/il/il1_anal.c @@ -143,6 +143,9 @@ STATIC anal_instr(p,b,cf) case ps_hol: check_labels(p,ARG(l)); break; + case op_nop: /* volatile */ + UNSUITABLE(p); + break; } } } diff --git a/util/ego/share/locals.c b/util/ego/share/locals.c index c4adbdac8..853d902ab 100644 --- a/util/ego/share/locals.c +++ b/util/ego/share/locals.c @@ -118,6 +118,10 @@ STATIC check_local_use(l,locs) default: return; } + if (l->l_next && INSTR(l->l_next) == op_nop) { + /* volatile */ + return; + } localvar(off_set(l),sz,locs,FALSE,(offset) 0); } -- 2.34.1