1 /*========================== begin_copyright_notice ============================ 2 3 Copyright (C) 2018-2021 Intel Corporation 4 5 SPDX-License-Identifier: MIT 6 7 ============================= end_copyright_notice ===========================*/ 8 9 #ifndef IGCLLVM_IR_FUNCTION_H 10 #define IGCLLVM_IR_FUNCTION_H 11 12 #include "llvm/IR/Function.h" 13 14 namespace IGCLLVM { 15 getArg(const llvm::Function & F,unsigned ArgNo)16inline llvm::Argument *getArg(const llvm::Function &F, unsigned ArgNo) { 17 IGC_ASSERT(F.arg_size() > ArgNo); 18 llvm::Argument *Arg = nullptr; 19 20 #if LLVM_VERSION_MAJOR < 10 21 // similar to lvm::Function::getArg implementation 22 auto ArgIt = F.arg_begin(); 23 std::advance(ArgIt, ArgNo); 24 Arg = const_cast<llvm::Argument *>(&*ArgIt); 25 #else 26 Arg = F.getArg(ArgNo); 27 #endif 28 29 return Arg; 30 } 31 32 } // namespace IGCLLVM 33 34 #endif 35