mirror of https://github.com/m-labs/artiq.git
LLVMIRGenerator: attach debug metadata to all emitted LLVM instructions.
This commit is contained in:
parent
51c591f01a
commit
53b4d87647
|
@ -387,14 +387,14 @@ class LLVMIRGenerator:
|
||||||
for block in func.basic_blocks:
|
for block in func.basic_blocks:
|
||||||
self.llbuilder.position_at_end(self.llmap[block])
|
self.llbuilder.position_at_end(self.llmap[block])
|
||||||
for insn in block.instructions:
|
for insn in block.instructions:
|
||||||
|
if insn.loc is not None:
|
||||||
|
self.llbuilder.debug_metadata = \
|
||||||
|
self.debug_info_emitter.emit_loc(insn.loc, disubprogram)
|
||||||
|
|
||||||
llinsn = getattr(self, "process_" + type(insn).__name__)(insn)
|
llinsn = getattr(self, "process_" + type(insn).__name__)(insn)
|
||||||
assert llinsn is not None
|
assert llinsn is not None
|
||||||
self.llmap[insn] = llinsn
|
self.llmap[insn] = llinsn
|
||||||
|
|
||||||
if insn.loc is not None and not isinstance(llinsn, ll.Constant):
|
|
||||||
diloc = self.debug_info_emitter.emit_loc(insn.loc, disubprogram)
|
|
||||||
llinsn.set_metadata('dbg', diloc)
|
|
||||||
|
|
||||||
# There is no 1:1 correspondence between ARTIQ and LLVM
|
# There is no 1:1 correspondence between ARTIQ and LLVM
|
||||||
# basic blocks, because sometimes we expand a single ARTIQ
|
# basic blocks, because sometimes we expand a single ARTIQ
|
||||||
# instruction so that the result spans several LLVM basic
|
# instruction so that the result spans several LLVM basic
|
||||||
|
|
Loading…
Reference in New Issue