Added support for volatile
This commit is contained in:
parent
ed1a07a874
commit
2b7aae3b44
4 changed files with 9 additions and 1 deletions
|
@ -122,7 +122,7 @@ STATIC struct {
|
||||||
/* mon */ HOPELESS, XXX, XXX, XXX, XXX,
|
/* mon */ HOPELESS, XXX, XXX, XXX, XXX,
|
||||||
/* ngf */ UNAIR_OP, ARGW, XXX, ARGW, FLT,
|
/* ngf */ UNAIR_OP, ARGW, XXX, ARGW, FLT,
|
||||||
/* ngi */ UNAIR_OP, ARGW, XXX, ARGW, ANY,
|
/* 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,
|
/* rck */ BBLOCK_END, XXX, XXX, XXX, XXX,
|
||||||
/* ret */ BBLOCK_END, XXX, XXX, XXX, XXX,
|
/* ret */ BBLOCK_END, XXX, XXX, XXX, XXX,
|
||||||
/* rmi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
|
/* rmi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
|
||||||
|
|
|
@ -267,6 +267,7 @@ hopeless(instr)
|
||||||
break;
|
break;
|
||||||
case op_mon:
|
case op_mon:
|
||||||
case op_str:
|
case op_str:
|
||||||
|
case op_nop: /* for volatiles */
|
||||||
/* We can't even trust "static" entities. */
|
/* We can't even trust "static" entities. */
|
||||||
kill_all();
|
kill_all();
|
||||||
clr_stack();
|
clr_stack();
|
||||||
|
|
|
@ -143,6 +143,9 @@ STATIC anal_instr(p,b,cf)
|
||||||
case ps_hol:
|
case ps_hol:
|
||||||
check_labels(p,ARG(l));
|
check_labels(p,ARG(l));
|
||||||
break;
|
break;
|
||||||
|
case op_nop: /* volatile */
|
||||||
|
UNSUITABLE(p);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,6 +118,10 @@ STATIC check_local_use(l,locs)
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (l->l_next && INSTR(l->l_next) == op_nop) {
|
||||||
|
/* volatile */
|
||||||
|
return;
|
||||||
|
}
|
||||||
localvar(off_set(l),sz,locs,FALSE,(offset) 0);
|
localvar(off_set(l),sz,locs,FALSE,(offset) 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue