diff options
Diffstat (limited to 'llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp | 30 | 
1 files changed, 15 insertions, 15 deletions
diff --git a/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp b/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp index 9e11c3a..dd57b74 100644 --- a/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp @@ -149,23 +149,23 @@ static FunctionType *getOriginalFunctionType(const Function &F) {          return isa<MDString>(N->getOperand(0)) &&                 cast<MDString>(N->getOperand(0))->getString() == F.getName();        }); -  // TODO: probably one function can have numerous type mutations, -  // so we should support this.    if (ThisFuncMDIt != NamedMD->op_end()) {      auto *ThisFuncMD = *ThisFuncMDIt; -    MDNode *MD = dyn_cast<MDNode>(ThisFuncMD->getOperand(1)); -    assert(MD && "MDNode operand is expected"); -    ConstantInt *Const = getConstInt(MD, 0); -    if (Const) { -      auto *CMeta = dyn_cast<ConstantAsMetadata>(MD->getOperand(1)); -      assert(CMeta && "ConstantAsMetadata operand is expected"); -      assert(Const->getSExtValue() >= -1); -      // Currently -1 indicates return value, greater values mean -      // argument numbers. -      if (Const->getSExtValue() == -1) -        RetTy = CMeta->getType(); -      else -        ArgTypes[Const->getSExtValue()] = CMeta->getType(); +    for (unsigned I = 1; I != ThisFuncMD->getNumOperands(); ++I) { +      MDNode *MD = dyn_cast<MDNode>(ThisFuncMD->getOperand(I)); +      assert(MD && "MDNode operand is expected"); +      ConstantInt *Const = getConstInt(MD, 0); +      if (Const) { +        auto *CMeta = dyn_cast<ConstantAsMetadata>(MD->getOperand(1)); +        assert(CMeta && "ConstantAsMetadata operand is expected"); +        assert(Const->getSExtValue() >= -1); +        // Currently -1 indicates return value, greater values mean +        // argument numbers. +        if (Const->getSExtValue() == -1) +          RetTy = CMeta->getType(); +        else +          ArgTypes[Const->getSExtValue()] = CMeta->getType(); +      }      }    }  | 
