[WIP] Add a Trap sink to code generation (#279)
* First draft of TrapSink implementation. * Add trap sink calls to 'trapif' and 'trapff' recipes. * Add SourceLoc to trap sink calls, and add trap sink calls to all loads and stores. * Add IntegerDivisionByZero trap to div recipe. * Only emit load/store traps if 'notrap' flag is not set on the instruction. * Update filetest machinery to add new trap sink functionality. * Update filetests to include traps in output. * Add a few more trap outputs to filetests. * Add trap output to CLI tool.
This commit is contained in:
committed by
Dan Gohman
parent
d566faa8fb
commit
951ff11f85
@@ -102,6 +102,10 @@ impl binemit::CodeSink for TextSink {
|
||||
fn reloc_jt(&mut self, reloc: binemit::Reloc, jt: ir::JumpTable) {
|
||||
write!(self.text, "{}({}) ", reloc, jt).unwrap();
|
||||
}
|
||||
|
||||
fn trap(&mut self, code: ir::TrapCode, _srcloc: ir::SourceLoc) {
|
||||
write!(self.text, "{} ", code).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
impl SubTest for TestBinEmit {
|
||||
|
||||
@@ -111,4 +111,5 @@ impl binemit::CodeSink for SizeSink {
|
||||
) {
|
||||
}
|
||||
fn reloc_jt(&mut self, _reloc: binemit::Reloc, _jt: ir::JumpTable) {}
|
||||
fn trap(&mut self, _code: ir::TrapCode, _srcloc: ir::SourceLoc) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user