diff options
author | dim <dim@FreeBSD.org> | 2014-11-24 09:15:30 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2014-11-24 09:15:30 +0000 |
commit | 173a4f43a911175643bda81ee675e8d9269056ea (patch) | |
tree | 47df2c12b57214af6c31e47404b005675b8b7ffc /lib/CodeGen/CGBuilder.h | |
parent | 88f7a7d5251a2d813460274c92decc143a11569b (diff) | |
download | FreeBSD-src-173a4f43a911175643bda81ee675e8d9269056ea.zip FreeBSD-src-173a4f43a911175643bda81ee675e8d9269056ea.tar.gz |
Vendor import of clang RELEASE_350/final tag r216957 (effectively, 3.5.0 release):
https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_350/final@216957
Diffstat (limited to 'lib/CodeGen/CGBuilder.h')
-rw-r--r-- | lib/CodeGen/CGBuilder.h | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/lib/CodeGen/CGBuilder.h b/lib/CodeGen/CGBuilder.h index fd21e7e..f113b97 100644 --- a/lib/CodeGen/CGBuilder.h +++ b/lib/CodeGen/CGBuilder.h @@ -15,12 +15,39 @@ namespace clang { namespace CodeGen { +class CodeGenFunction; + +/// \brief This is an IRBuilder insertion helper that forwards to +/// CodeGenFunction::InsertHelper, which adds nesessary metadata to +/// instructions. +template <bool PreserveNames> +class CGBuilderInserter + : protected llvm::IRBuilderDefaultInserter<PreserveNames> { +public: + CGBuilderInserter() : CGF(nullptr) {} + explicit CGBuilderInserter(CodeGenFunction *CGF) : CGF(CGF) {} + +protected: + /// \brief This forwards to CodeGenFunction::InsertHelper. + void InsertHelper(llvm::Instruction *I, const llvm::Twine &Name, + llvm::BasicBlock *BB, + llvm::BasicBlock::iterator InsertPt) const; +private: + void operator=(const CGBuilderInserter &) LLVM_DELETED_FUNCTION; + + CodeGenFunction *CGF; +}; + // Don't preserve names on values in an optimized build. #ifdef NDEBUG -typedef llvm::IRBuilder<false> CGBuilderTy; +#define PreserveNames false #else -typedef llvm::IRBuilder<> CGBuilderTy; +#define PreserveNames true #endif +typedef CGBuilderInserter<PreserveNames> CGBuilderInserterTy; +typedef llvm::IRBuilder<PreserveNames, llvm::ConstantFolder, + CGBuilderInserterTy> CGBuilderTy; +#undef PreserveNames } // end namespace CodeGen } // end namespace clang |