[llvm] e4d1779 - [IR] Add ConstraintInfo::hasArg() helper (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 7 01:44:46 PST 2022
Author: Nikita Popov
Date: 2022-01-07T10:44:38+01:00
New Revision: e4d1779990672f8c1c7a2b6b8c6efd73c95ce5ac
URL: https://github.com/llvm/llvm-project/commit/e4d1779990672f8c1c7a2b6b8c6efd73c95ce5ac
DIFF: https://github.com/llvm/llvm-project/commit/e4d1779990672f8c1c7a2b6b8c6efd73c95ce5ac.diff
LOG: [IR] Add ConstraintInfo::hasArg() helper (NFC)
Checking whether a constraint corresponds to an argument is a
recurring pattern.
Added:
Modified:
llvm/include/llvm/IR/InlineAsm.h
llvm/lib/Bitcode/Reader/BitcodeReader.cpp
llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
llvm/lib/IR/Verifier.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/InlineAsm.h b/llvm/include/llvm/IR/InlineAsm.h
index 1a0767aca1424..cf6b7af96980e 100644
--- a/llvm/include/llvm/IR/InlineAsm.h
+++ b/llvm/include/llvm/IR/InlineAsm.h
@@ -171,6 +171,11 @@ class InlineAsm final : public Value {
/// selectAlternative - Point this constraint to the alternative constraint
/// indicated by the index.
void selectAlternative(unsigned index);
+
+ /// Whether this constraint corresponds to an argument.
+ bool hasArg() const {
+ return Type == isInput || (Type == isOutput && isIndirect);
+ }
};
/// ParseConstraints - Split up the constraint string into the specific
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 879ebfbd2979e..13f492859a310 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -3927,9 +3927,7 @@ void BitcodeReader::propagateAttributeTypes(CallBase *CB,
const InlineAsm *IA = cast<InlineAsm>(CB->getCalledOperand());
unsigned ArgNo = 0;
for (const InlineAsm::ConstraintInfo &CI : IA->ParseConstraints()) {
- bool HasArg = CI.Type == InlineAsm::isInput ||
- (CI.Type == InlineAsm::isOutput && CI.isIndirect);
- if (!HasArg)
+ if (!CI.hasArg())
continue;
if (CI.isIndirect && !CB->getAttributes().getParamElementType(ArgNo)) {
diff --git a/llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp b/llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp
index 4ae4274849458..56a700721544c 100644
--- a/llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp
@@ -297,9 +297,7 @@ bool InlineAsmLowering::lowerInlineAsm(
GISelAsmOperandInfo &OpInfo = ConstraintOperands.back();
// Compute the value type for each operand.
- if (OpInfo.Type == InlineAsm::isInput ||
- (OpInfo.Type == InlineAsm::isOutput && OpInfo.isIndirect)) {
-
+ if (OpInfo.hasArg()) {
OpInfo.CallOperandVal = const_cast<Value *>(Call.getArgOperand(ArgNo++));
if (isa<BasicBlock>(OpInfo.CallOperandVal)) {
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 63cd723cf6da3..b1dc1844b0de6 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -8565,8 +8565,7 @@ void SelectionDAGBuilder::visitInlineAsm(const CallBase &Call,
SDISelAsmOperandInfo &OpInfo = ConstraintOperands.back();
// Compute the value type for each operand.
- if (OpInfo.Type == InlineAsm::isInput ||
- (OpInfo.Type == InlineAsm::isOutput && OpInfo.isIndirect)) {
+ if (OpInfo.hasArg()) {
OpInfo.CallOperandVal = Call.getArgOperand(ArgNo++);
// Process the call argument. BasicBlocks are labels, currently appearing
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 3ffc6e3729762..c9b1bc9653c8d 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -2151,9 +2151,7 @@ void Verifier::verifyInlineAsmCall(const CallBase &Call) {
unsigned ArgNo = 0;
for (const InlineAsm::ConstraintInfo &CI : IA->ParseConstraints()) {
// Only deal with constraints that correspond to call arguments.
- bool HasArg = CI.Type == InlineAsm::isInput ||
- (CI.Type == InlineAsm::isOutput && CI.isIndirect);
- if (!HasArg)
+ if (!CI.hasArg())
continue;
if (CI.isIndirect) {
More information about the llvm-commits
mailing list