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)16 inline 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