summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.cpp3
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.h13
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp11
3 files changed, 7 insertions, 20 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
index 68d10ff56ed..dc00a76ff91 100644
--- a/clang/lib/CodeGen/CodeGenFunction.cpp
+++ b/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -133,8 +133,9 @@ void CodeGenFunction::FinishFunction(SourceLocation EndLoc) {
EmitFunctionEpilog(*CurFnInfo, ReturnValue);
// Remove the AllocaInsertPt instruction, which is just a convenience for us.
- AllocaInsertPt->eraseFromParent();
+ llvm::Instruction *Ptr = AllocaInsertPt;
AllocaInsertPt = 0;
+ Ptr->eraseFromParent();
}
void CodeGenFunction::StartFunction(const Decl *D, QualType RetTy,
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index f850cfdc5bc..9dbbb25b220 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -15,16 +15,13 @@
#define CLANG_CODEGEN_CODEGENFUNCTION_H
#include "clang/AST/Type.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/SmallVector.h"
-#include "clang/Basic/TargetInfo.h"
-#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
-
-#include <vector>
+#include "clang/Basic/TargetInfo.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/Support/ValueHandle.h"
#include <map>
-
#include "CGBlocks.h"
#include "CGBuilder.h"
#include "CGCall.h"
@@ -87,7 +84,7 @@ public:
/// AllocaInsertPoint - This is an instruction in the entry block before which
/// we prefer to insert allocas.
- llvm::Instruction *AllocaInsertPt;
+ llvm::AssertingVH<llvm::Instruction> AllocaInsertPt;
const llvm::Type *LLVMIntTy;
uint32_t LLVMPointerWidth;
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 907ade569bb..3de8156fe51 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -118,17 +118,6 @@ static void setGlobalVisibility(llvm::GlobalValue *GV,
/// const char* containing the mangled name. Otherwise, returns
/// the unmangled name.
///
-/// FIXME: Returning an IdentifierInfo* here is a total hack. We
-/// really need some kind of string abstraction that either stores a
-/// mangled name or stores an IdentifierInfo*. This will require
-/// changes to the GlobalDeclMap, too. (I disagree, I think what we
-/// actually need is for Sema to provide some notion of which Decls
-/// refer to the same semantic decl. We shouldn't need to mangle the
-/// names and see what comes out the same to figure this out. - DWD)
-///
-/// FIXME: Performance here is going to be terribly until we start
-/// caching mangled names. However, we should fix the problem above
-/// first.
const char *CodeGenModule::getMangledName(const NamedDecl *ND) {
// In C, functions with no attributes never need to be mangled. Fastpath them.
if (!getLangOptions().CPlusPlus && !ND->hasAttrs()) {
OpenPOWER on IntegriCloud