1 /*========================== begin_copyright_notice ============================ 2 3 Copyright (C) 2021 Intel Corporation 4 5 SPDX-License-Identifier: MIT 6 7 ============================= end_copyright_notice ===========================*/ 8 9 #include "vc/Utils/General/FunctionAttrs.h" 10 11 #include "Probe/Assertion.h" 12 transferDISubprogram(llvm::Function & From,llvm::Function & To)13void vc::transferDISubprogram(llvm::Function &From, llvm::Function &To) { 14 auto *DISp = From.getSubprogram(); 15 To.setSubprogram(DISp); 16 // DISubprogram must be unique to the module. 17 // We preserve IR correctness by detaching DISubprogram node from the original 18 // function 19 From.setSubprogram(nullptr); 20 } 21 transferNameAndCCWithNewAttr(const llvm::AttributeList Attrs,llvm::Function & From,llvm::Function & To)22void vc::transferNameAndCCWithNewAttr(const llvm::AttributeList Attrs, 23 llvm::Function &From, 24 llvm::Function &To) { 25 To.takeName(&From); 26 To.setCallingConv(From.getCallingConv()); 27 To.setAttributes(Attrs); 28 } 29 isFixedSignatureFunc(const llvm::Function & F)30bool vc::isFixedSignatureFunc(const llvm::Function &F) { 31 if (F.getCallingConv() == llvm::CallingConv::SPIR_KERNEL) 32 return false; 33 return !F.hasLocalLinkage() || F.hasAddressTaken(); 34 } 35