[llvm-dev] How does BlockAddress map to MachineBasicBlock? (original) (raw)

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Mon May 11 09:52:22 PDT 2020


In general you can’t do that via block address. However, you should be able to attach a symbol to the call instruction (MachineInstr) which would serve as a label identifying the instruction. Look for “MachineInstr::setPreInstrSymbol", although the comment in the header file says that it’s not completely implemented yet.

-- Krzysztof Parzyszek kparzysz at quicinc.com<mailto:kparzysz at quicinc.com> AI tools development

From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of PenYiWang via llvm-dev Sent: Monday, May 11, 2020 11:08 AM To: llvm-dev <llvm-dev at lists.llvm.org> Subject: [EXT] [llvm-dev] How does BlockAddress map to MachineBasicBlock?

Hi

If we use BlockAddress of the IR ,

there will be corresponding label in the Machine IR.

So that we can get the address of BasicBlcok from this label.

Now, I use BlockAddress to get the address of CallInst in IR level.

I want to adjust the label in MIR to get the address of exactly call instruction.

Because the CallInst is often lowered to more than one MIR/asm.

like maintaining stack pointer, argument preparing and the call instruction.

So, my question is

How can I change the mapping between BlockAddress and label in MIR?

Can I split a MBB and let the Blockaddress map to the new MBB?

Or how to change the location of label in MIR ?

I just want to move the label back like one or two instruction to the call instruction.

Thank you

-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200511/cf07e93a/attachment.html>



More information about the llvm-dev mailing list