From 6bd2a89d5ae990135b6d400982c2004ad72b9f15 Mon Sep 17 00:00:00 2001 From: John McCall Date: Fri, 25 Jan 2013 22:31:03 +0000 Subject: The standard ARM C++ ABI dictates that inline functions are never key functions. We did not implement that rule for the iOS ABI, which was driven by what was implemented in gcc-4.2. However, implement it now for other ARM-based platforms. llvm-svn: 173515 --- clang/lib/CodeGen/CodeGenModule.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'clang/lib/CodeGen/CodeGenModule.h') diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h index 0f01120..75c5e93 100644 --- a/clang/lib/CodeGen/CodeGenModule.h +++ b/clang/lib/CodeGen/CodeGenModule.h @@ -258,6 +258,9 @@ class CodeGenModule : public CodeGenTypeCache { /// is done. std::vector DeferredDeclsToEmit; + /// DeferredVTables - A queue of (optional) vtables to consider emitting. + std::vector DeferredVTables; + /// LLVMUsed - List of global values which are required to be /// present in the object file; bitcast to i8*. This is used for /// forcing visibility of symbols which may otherwise be optimized @@ -865,8 +868,6 @@ public: GetLLVMLinkageVarDefinition(const VarDecl *D, llvm::GlobalVariable *GV); - std::vector DeferredVTables; - /// Emit all the global annotations. void EmitGlobalAnnotations(); @@ -900,6 +901,10 @@ public: const SanitizerOptions &getSanOpts() const { return SanOpts; } + void addDeferredVTable(const CXXRecordDecl *RD) { + DeferredVTables.push_back(RD); + } + private: llvm::GlobalValue *GetGlobalValue(StringRef Ref); @@ -1002,6 +1007,10 @@ private: /// was deferred. void EmitDeferred(); + /// EmitDeferredVTables - Emit any vtables which we deferred and + /// still have a use for. + void EmitDeferredVTables(); + /// EmitLLVMUsed - Emit the llvm.used metadata used to force /// references to global which may otherwise be optimized out. void EmitLLVMUsed(); -- cgit v1.1