Added support for volatile
authorceriel <none@none>
Wed, 2 Oct 1991 13:03:31 +0000 (13:03 +0000)
committerceriel <none@none>
Wed, 2 Oct 1991 13:03:31 +0000 (13:03 +0000)
util/ego/cs/cs_partit.c
util/ego/cs/cs_vnm.c
util/ego/il/il1_anal.c
util/ego/share/locals.c

index 256b661..4d36b5b 100644 (file)
@@ -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,
index 62bc139..ad4911e 100644 (file)
@@ -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();
index 996f57b..575912a 100644 (file)
@@ -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;
           }
        }
 }
index c4adbda..853d902 100644 (file)
@@ -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);
 }