[PATCH] D130316: [SelectionDAG] make INLINEASM_BR use MachineBasicBlocks instead of BlockAddresses

Nick Desaulniers via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 22 14:23:05 PDT 2022


nickdesaulniers marked 2 inline comments as done.
nickdesaulniers added a comment.

Ok, this is ready for review/testing.  It's part of a series:

1. https://reviews.llvm.org/D130316
2. https://reviews.llvm.org/D130323
3. https://reviews.llvm.org/D130391

Then 4 (https://reviews.llvm.org/D130290) which I will rebase once this lands.



================
Comment at: llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:5294-5295
+      OpInfo.CallOperandVal = BA->getBasicBlock();
       OpInfo.ConstraintVT =
-          getAsmOperandValueType(DL, OpInfo.CallOperandVal->getType())
-              .getSimpleVT();
+        getAsmOperandValueType(DL, BA->getType()).getSimpleVT();
       ++LabelNo;
----------------
nickdesaulniers wrote:
> nickdesaulniers wrote:
> > nickdesaulniers wrote:
> > > nikic wrote:
> > > > nickdesaulniers wrote:
> > > > > Not sure this is quite right, but also not sure what it should be.  Maybe the reviewers do?
> > > > `BA` has an `i8*` type, so can directly use that?
> > > `Type::getInt8PtrTy` seems to cause crashes...cant tell what type is actually being used; everything looks like opaque ptrs...
> > branch-folder is messing something up...
> ahoy! Both TailDuplicator and BranchFolding were relying on whether an MBB has its address taken. After this change, they wont, so those cases additionally need to check for isInlineAsmBrIndirectTarget. With that added, we're working AND the .Ltmp labels are gone (good)!  Now just to clean up the test churn after lunch, but I think this will all work and look nice. Stay tuned.
The last wart on an otherwise great simplification is getting the context for `Type::getInt8PtrTy`. Thoughts on how I can improve this?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130316/new/

https://reviews.llvm.org/D130316



More information about the llvm-commits mailing list