[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