Add a readonly flag for loads (#562)
* Add readonly MemFlag * Add readonly flag verifier check * Make global loads readonly * Fix gvn to consider readonly loads
This commit is contained in:
committed by
Dan Gohman
parent
3ec21459c5
commit
586a8835e9
@@ -1226,16 +1226,15 @@ impl<'a> Parser<'a> {
|
||||
let flags = self.optional_memflags();
|
||||
let base = self.match_gv("expected global value: gv«n»")?;
|
||||
let offset = self.optional_offset32()?;
|
||||
let mut expected_flags = MemFlags::new();
|
||||
expected_flags.set_notrap();
|
||||
expected_flags.set_aligned();
|
||||
if flags != expected_flags {
|
||||
|
||||
if !(flags.notrap() && flags.aligned()) {
|
||||
return err!(self.loc, "global-value load must be notrap and aligned");
|
||||
}
|
||||
GlobalValueData::Load {
|
||||
base,
|
||||
offset,
|
||||
global_type,
|
||||
readonly: flags.readonly(),
|
||||
}
|
||||
}
|
||||
"iadd_imm" => {
|
||||
|
||||
Reference in New Issue
Block a user