[PATCH] D115688: [SelectionDAG] treat X constrained labels as i for asm
Bill Wendling via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 21 12:23:03 PST 2021
void added inline comments.
================
Comment at: llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:8569
OpInfo.CallOperandVal = Call.getArgOperand(ArgNo++);
-
- // Process the call argument. BasicBlocks are labels, currently appearing
- // only in asm's.
- if (isa<CallBrInst>(Call) &&
- ArgNo - 1 >= (cast<CallBrInst>(&Call)->arg_size() -
- cast<CallBrInst>(&Call)->getNumIndirectDests() -
- NumMatchingOps) &&
- (NumMatchingOps == 0 ||
- ArgNo - 1 <
- (cast<CallBrInst>(&Call)->arg_size() - NumMatchingOps))) {
- const auto *BA = cast<BlockAddress>(OpInfo.CallOperandVal);
- EVT VT = TLI.getValueType(DAG.getDataLayout(), BA->getType(), true);
- OpInfo.CallOperand = DAG.getTargetBlockAddress(BA, VT);
- } else if (const auto *BB = dyn_cast<BasicBlock>(OpInfo.CallOperandVal)) {
- OpInfo.CallOperand = DAG.getBasicBlock(FuncInfo.MBBMap[BB]);
- } else {
- OpInfo.CallOperand = getValue(OpInfo.CallOperandVal);
- }
-
+ OpInfo.CallOperand = getValue(OpInfo.CallOperandVal);
EVT VT = OpInfo.getCallOperandValEVT(*DAG.getContext(), TLI,
----------------
The old code uses `DAG.getTargetBlockAddress(...)`. This new code uses `DAG.getBlockAddress(...)`. What's the difference?
================
Comment at: llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:4595-4626
- GlobalAddressSDNode *GA;
ConstantSDNode *C;
- BlockAddressSDNode *BA;
uint64_t Offset = 0;
// Match (GA) or (C) or (GA+C) or (GA-C) or ((GA+C)+C) or (((GA+C)+C)+C),
// etc., since getelementpointer is variadic. We can't use
----------------
nickdesaulniers wrote:
> Note to reviewers: I got a little carried away refactoring the existing code here. If it's too distracting from this review, I'm happy to pre-commit this hunk.
This is fine, but in the future it might be best to commit refactoring in a separate NFC commit.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D115688/new/
https://reviews.llvm.org/D115688
More information about the llvm-commits
mailing list