mirror of
https://github.com/intel/llvm.git
synced 2026-01-29 04:16:38 +08:00
[CodeGen] Remove dead code. NFC.
llvm-svn: 250418
This commit is contained in:
@@ -4106,15 +4106,6 @@ Value *CodeGenFunction::vectorWrapScalar16(Value *Op) {
|
||||
return Op;
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::vectorWrapScalar8(Value *Op) {
|
||||
llvm::Type *VTy = llvm::VectorType::get(Int8Ty, 8);
|
||||
Op = Builder.CreateBitCast(Op, Int8Ty);
|
||||
Value *V = UndefValue::get(VTy);
|
||||
llvm::Constant *CI = ConstantInt::get(SizeTy, 0);
|
||||
Op = Builder.CreateInsertElement(V, Op, CI);
|
||||
return Op;
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
|
||||
const CallExpr *E) {
|
||||
unsigned HintID = static_cast<unsigned>(-1);
|
||||
|
||||
@@ -3038,12 +3038,6 @@ CodeGenFunction::EmitRuntimeCallOrInvoke(llvm::Value *callee,
|
||||
return callSite;
|
||||
}
|
||||
|
||||
llvm::CallSite
|
||||
CodeGenFunction::EmitCallOrInvoke(llvm::Value *Callee,
|
||||
const Twine &Name) {
|
||||
return EmitCallOrInvoke(Callee, None, Name);
|
||||
}
|
||||
|
||||
/// Emits a call or invoke instruction to the given function, depending
|
||||
/// on the current state of the EH stack.
|
||||
llvm::CallSite
|
||||
|
||||
@@ -167,23 +167,6 @@ EHScopeStack::getInnermostActiveNormalCleanup() const {
|
||||
return stable_end();
|
||||
}
|
||||
|
||||
EHScopeStack::stable_iterator EHScopeStack::getInnermostActiveEHScope() const {
|
||||
for (stable_iterator si = getInnermostEHScope(), se = stable_end();
|
||||
si != se; ) {
|
||||
// Skip over inactive cleanups.
|
||||
EHCleanupScope *cleanup = dyn_cast<EHCleanupScope>(&*find(si));
|
||||
if (cleanup && !cleanup->isActive()) {
|
||||
si = cleanup->getEnclosingEHScope();
|
||||
continue;
|
||||
}
|
||||
|
||||
// All other scopes are always active.
|
||||
return si;
|
||||
}
|
||||
|
||||
return stable_end();
|
||||
}
|
||||
|
||||
|
||||
void *EHScopeStack::pushCleanup(CleanupKind Kind, size_t Size) {
|
||||
char *Buffer = allocate(EHCleanupScope::getSizeForCleanupSize(Size));
|
||||
|
||||
@@ -2159,30 +2159,6 @@ llvm::DIType *CGDebugInfo::getOrCreateType(QualType Ty, llvm::DIFile *Unit) {
|
||||
return Res;
|
||||
}
|
||||
|
||||
unsigned CGDebugInfo::Checksum(const ObjCInterfaceDecl *ID) {
|
||||
// The assumption is that the number of ivars can only increase
|
||||
// monotonically, so it is safe to just use their current number as
|
||||
// a checksum.
|
||||
unsigned Sum = 0;
|
||||
for (const ObjCIvarDecl *Ivar = ID->all_declared_ivar_begin();
|
||||
Ivar != nullptr; Ivar = Ivar->getNextIvar())
|
||||
++Sum;
|
||||
|
||||
return Sum;
|
||||
}
|
||||
|
||||
ObjCInterfaceDecl *CGDebugInfo::getObjCInterfaceDecl(QualType Ty) {
|
||||
switch (Ty->getTypeClass()) {
|
||||
case Type::ObjCObjectPointer:
|
||||
return getObjCInterfaceDecl(
|
||||
cast<ObjCObjectPointerType>(Ty)->getPointeeType());
|
||||
case Type::ObjCInterface:
|
||||
return cast<ObjCInterfaceType>(Ty)->getDecl();
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
llvm::DIModule *CGDebugInfo::getParentModuleOrNull(const Decl *D) {
|
||||
// A forward declaration inside a module header does not belong to the module.
|
||||
if (isa<RecordDecl>(D) && !cast<RecordDecl>(D)->getDefinition())
|
||||
|
||||
@@ -135,12 +135,6 @@ class CGDebugInfo {
|
||||
NamespaceAliasCache;
|
||||
llvm::DenseMap<const Decl *, llvm::TypedTrackingMDRef<llvm::DIDerivedType>>
|
||||
StaticDataMemberCache;
|
||||
|
||||
/// Helper functions for getOrCreateType.
|
||||
/// @{
|
||||
/// Currently the checksum of an interface includes the number of
|
||||
/// ivars and property accessors.
|
||||
unsigned Checksum(const ObjCInterfaceDecl *InterfaceDecl);
|
||||
llvm::DIType *CreateType(const BuiltinType *Ty);
|
||||
llvm::DIType *CreateType(const ComplexType *Ty);
|
||||
llvm::DIType *CreateQualifiedType(QualType Ty, llvm::DIFile *Fg);
|
||||
@@ -199,11 +193,8 @@ class CGDebugInfo {
|
||||
llvm::DIType *getOrCreateVTablePtrType(llvm::DIFile *F);
|
||||
/// \return namespace descriptor for the given namespace decl.
|
||||
llvm::DINamespace *getOrCreateNameSpace(const NamespaceDecl *N);
|
||||
llvm::DIType *getOrCreateTypeDeclaration(QualType PointeeTy, llvm::DIFile *F);
|
||||
llvm::DIType *CreatePointerLikeType(llvm::dwarf::Tag Tag, const Type *Ty,
|
||||
QualType PointeeTy, llvm::DIFile *F);
|
||||
|
||||
llvm::Value *getCachedInterfaceTypeOrNull(const QualType Ty);
|
||||
llvm::DIType *getOrCreateStructPtrType(StringRef Name, llvm::DIType *&Cache);
|
||||
|
||||
/// A helper function to create a subprogram for a single member
|
||||
@@ -435,10 +426,6 @@ private:
|
||||
/// Create type metadata for a source language type.
|
||||
llvm::DIType *CreateTypeNode(QualType Ty, llvm::DIFile *Fg);
|
||||
|
||||
/// Return the underlying ObjCInterfaceDecl if \arg Ty is an
|
||||
/// ObjCInterface or a pointer to one.
|
||||
ObjCInterfaceDecl *getObjCInterfaceDecl(QualType Ty);
|
||||
|
||||
/// Create new member and increase Offset by FType's size.
|
||||
llvm::DIType *CreateMemberType(llvm::DIFile *Unit, QualType FType,
|
||||
StringRef Name, uint64_t *Offset);
|
||||
@@ -587,12 +574,6 @@ public:
|
||||
return ApplyDebugLocation(CGF, true, SourceLocation());
|
||||
}
|
||||
|
||||
/// \brief Apply TemporaryLocation if it is valid. Otherwise set the IRBuilder
|
||||
/// to not attach debug locations.
|
||||
static ApplyDebugLocation
|
||||
CreateDefaultEmpty(CodeGenFunction &CGF, SourceLocation TemporaryLocation) {
|
||||
return ApplyDebugLocation(CGF, true, TemporaryLocation);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace CodeGen
|
||||
|
||||
@@ -1410,22 +1410,6 @@ void CodeGenFunction::GenerateObjCCtorDtorMethod(ObjCImplementationDecl *IMP,
|
||||
FinishFunction();
|
||||
}
|
||||
|
||||
bool CodeGenFunction::IndirectObjCSetterArg(const CGFunctionInfo &FI) {
|
||||
CGFunctionInfo::const_arg_iterator it = FI.arg_begin();
|
||||
it++; it++;
|
||||
const ABIArgInfo &AI = it->info;
|
||||
// FIXME. Is this sufficient check?
|
||||
return (AI.getKind() == ABIArgInfo::Indirect);
|
||||
}
|
||||
|
||||
bool CodeGenFunction::IvarTypeWithAggrGCObjects(QualType Ty) {
|
||||
if (CGM.getLangOpts().getGC() == LangOptions::NonGC)
|
||||
return false;
|
||||
if (const RecordType *FDTTy = Ty.getTypePtr()->getAs<RecordType>())
|
||||
return FDTTy->getDecl()->hasObjectMember();
|
||||
return false;
|
||||
}
|
||||
|
||||
llvm::Value *CodeGenFunction::LoadObjCSelf() {
|
||||
VarDecl *Self = cast<ObjCMethodDecl>(CurFuncDecl)->getSelfDecl();
|
||||
DeclRefExpr DRE(Self, /*is enclosing local*/ (CurFuncDecl != CurCodeDecl),
|
||||
@@ -1745,13 +1729,6 @@ void CodeGenFunction::EmitObjCAtSynchronizedStmt(
|
||||
CGM.getObjCRuntime().EmitSynchronizedStmt(*this, S);
|
||||
}
|
||||
|
||||
/// Produce the code for a CK_ARCProduceObject. Just does a
|
||||
/// primitive retain.
|
||||
llvm::Value *CodeGenFunction::EmitObjCProduceObject(QualType type,
|
||||
llvm::Value *value) {
|
||||
return EmitARCRetain(type, value);
|
||||
}
|
||||
|
||||
namespace {
|
||||
struct CallObjCRelease final : EHScopeStack::Cleanup {
|
||||
CallObjCRelease(llvm::Value *object) : object(object) {}
|
||||
@@ -2187,14 +2164,6 @@ CodeGenFunction::EmitARCRetainAutoreleaseNonBlock(llvm::Value *value) {
|
||||
"objc_retainAutorelease");
|
||||
}
|
||||
|
||||
/// i8* \@objc_loadWeak(i8** %addr)
|
||||
/// Essentially objc_autorelease(objc_loadWeakRetained(addr)).
|
||||
llvm::Value *CodeGenFunction::EmitARCLoadWeak(Address addr) {
|
||||
return emitARCLoadOperation(*this, addr,
|
||||
CGM.getARCEntrypoints().objc_loadWeak,
|
||||
"objc_loadWeak");
|
||||
}
|
||||
|
||||
/// i8* \@objc_loadWeakRetained(i8** %addr)
|
||||
llvm::Value *CodeGenFunction::EmitARCLoadWeakRetained(Address addr) {
|
||||
return emitARCLoadOperation(*this, addr,
|
||||
|
||||
@@ -659,9 +659,6 @@ public:
|
||||
// MessageRefCPtrTy - clang type for struct _message_ref_t*
|
||||
QualType MessageRefCPtrTy;
|
||||
|
||||
// MessengerTy - Type of the messenger (shown as IMP above)
|
||||
llvm::FunctionType *MessengerTy;
|
||||
|
||||
// SuperMessageRefTy - LLVM for:
|
||||
// struct _super_message_ref_t {
|
||||
// SUPER_IMP messenger;
|
||||
|
||||
@@ -85,10 +85,6 @@ public:
|
||||
uint64_t getSecondaryVirtualPointerIndex(const CXXRecordDecl *RD,
|
||||
BaseSubobject Base);
|
||||
|
||||
/// getAddressPoint - Get the address point of the given subobject in the
|
||||
/// class decl.
|
||||
uint64_t getAddressPoint(BaseSubobject Base, const CXXRecordDecl *RD);
|
||||
|
||||
/// GenerateConstructionVTable - Generate a construction vtable for the given
|
||||
/// base subobject.
|
||||
llvm::GlobalVariable *
|
||||
|
||||
@@ -36,35 +36,3 @@ CodeGenABITypes::CodeGenABITypes(ASTContext &C, llvm::Module &M,
|
||||
// Explicitly out-of-line because ~CodeGenModule() is private but
|
||||
// CodeGenABITypes.h is part of clang's API.
|
||||
CodeGenABITypes::~CodeGenABITypes() = default;
|
||||
|
||||
const CGFunctionInfo &
|
||||
CodeGenABITypes::arrangeObjCMessageSendSignature(const ObjCMethodDecl *MD,
|
||||
QualType receiverType) {
|
||||
return CGM->getTypes().arrangeObjCMessageSendSignature(MD, receiverType);
|
||||
}
|
||||
|
||||
const CGFunctionInfo &
|
||||
CodeGenABITypes::arrangeFreeFunctionType(CanQual<FunctionProtoType> Ty) {
|
||||
return CGM->getTypes().arrangeFreeFunctionType(Ty);
|
||||
}
|
||||
|
||||
const CGFunctionInfo &
|
||||
CodeGenABITypes::arrangeFreeFunctionType(CanQual<FunctionNoProtoType> Ty) {
|
||||
return CGM->getTypes().arrangeFreeFunctionType(Ty);
|
||||
}
|
||||
|
||||
const CGFunctionInfo &
|
||||
CodeGenABITypes::arrangeCXXMethodType(const CXXRecordDecl *RD,
|
||||
const FunctionProtoType *FTP) {
|
||||
return CGM->getTypes().arrangeCXXMethodType(RD, FTP);
|
||||
}
|
||||
|
||||
const CGFunctionInfo &
|
||||
CodeGenABITypes::arrangeFreeFunctionCall(CanQualType returnType,
|
||||
ArrayRef<CanQualType> argTypes,
|
||||
FunctionType::ExtInfo info,
|
||||
RequiredArgs args) {
|
||||
return CGM->getTypes().arrangeLLVMFunctionInfo(
|
||||
returnType, /*IsInstanceMethod=*/false, /*IsChainCall=*/false, argTypes,
|
||||
info, args);
|
||||
}
|
||||
|
||||
@@ -250,10 +250,6 @@ public:
|
||||
~CGCapturedStmtRAII() { CGF.CapturedStmtInfo = PrevCapturedStmtInfo; }
|
||||
};
|
||||
|
||||
/// BoundsChecking - Emit run-time bounds checks. Higher values mean
|
||||
/// potentially higher performance penalties.
|
||||
unsigned char BoundsChecking;
|
||||
|
||||
/// \brief Sanitizers enabled for this function.
|
||||
SanitizerSet SanOpts;
|
||||
|
||||
@@ -1237,8 +1233,6 @@ public:
|
||||
void generateObjCSetterBody(const ObjCImplementationDecl *classImpl,
|
||||
const ObjCPropertyImplDecl *propImpl,
|
||||
llvm::Constant *AtomicHelperFn);
|
||||
bool IndirectObjCSetterArg(const CGFunctionInfo &FI);
|
||||
bool IvarTypeWithAggrGCObjects(QualType Ty);
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
// Block Bits
|
||||
@@ -1247,10 +1241,6 @@ public:
|
||||
llvm::Value *EmitBlockLiteral(const BlockExpr *);
|
||||
llvm::Value *EmitBlockLiteral(const CGBlockInfo &Info);
|
||||
static void destroyBlockInfos(CGBlockInfo *info);
|
||||
llvm::Constant *BuildDescriptorBlockDecl(const BlockExpr *,
|
||||
const CGBlockInfo &Info,
|
||||
llvm::StructType *,
|
||||
llvm::Constant *BlockVarLayout);
|
||||
|
||||
llvm::Function *GenerateBlockFunction(GlobalDecl GD,
|
||||
const CGBlockInfo &Info,
|
||||
@@ -1276,9 +1266,6 @@ public:
|
||||
llvm::Value *ptr);
|
||||
|
||||
Address LoadBlockStruct();
|
||||
|
||||
void AllocateBlockCXXThisPointer(const CXXThisExpr *E);
|
||||
void AllocateBlockDecl(const DeclRefExpr *E);
|
||||
Address GetAddrOfBlockDecl(const VarDecl *var, bool ByRef);
|
||||
|
||||
/// BuildBlockByrefAddress - Computes the location of the
|
||||
@@ -1627,10 +1614,6 @@ public:
|
||||
AggValueSlot::IsNotAliased);
|
||||
}
|
||||
|
||||
/// CreateInAllocaTmp - Create a temporary memory object for the given
|
||||
/// aggregate type.
|
||||
AggValueSlot CreateInAllocaTmp(QualType T, const Twine &Name = "inalloca");
|
||||
|
||||
/// Emit a cast to void* in the appropriate address space.
|
||||
llvm::Value *EmitCastToVoidPtr(llvm::Value *value);
|
||||
|
||||
@@ -1711,10 +1694,6 @@ public:
|
||||
QualType EltTy, bool isVolatile=false,
|
||||
bool isAssignment = false);
|
||||
|
||||
/// StartBlock - Start new block named N. If insert block is a dummy block
|
||||
/// then reuse it.
|
||||
void StartBlock(const char *N);
|
||||
|
||||
/// GetAddrOfLocalVar - Return the address of a local variable.
|
||||
Address GetAddrOfLocalVar(const VarDecl *VD) {
|
||||
auto it = LocalDeclMap.find(VD);
|
||||
@@ -1811,14 +1790,6 @@ public:
|
||||
return CXXStructorImplicitParamValue;
|
||||
}
|
||||
|
||||
/// LoadCXXStructorImplicitParam - Load the implicit parameter
|
||||
/// for a constructor/destructor.
|
||||
llvm::Value *LoadCXXStructorImplicitParam() {
|
||||
assert(CXXStructorImplicitParamValue &&
|
||||
"no implicit argument value for this function");
|
||||
return CXXStructorImplicitParamValue;
|
||||
}
|
||||
|
||||
/// GetAddressOfBaseOfCompleteClass - Convert the given pointer to a
|
||||
/// complete class to the given direct base.
|
||||
Address
|
||||
@@ -2549,7 +2520,6 @@ public:
|
||||
// Note: only available for agg return types
|
||||
LValue EmitVAArgExprLValue(const VAArgExpr *E);
|
||||
LValue EmitDeclRefLValue(const DeclRefExpr *E);
|
||||
LValue EmitReadRegister(const VarDecl *VD);
|
||||
LValue EmitStringLiteralLValue(const StringLiteral *E);
|
||||
LValue EmitObjCEncodeExprLValue(const ObjCEncodeExpr *E);
|
||||
LValue EmitPredefinedLValue(const PredefinedExpr *E);
|
||||
@@ -2677,8 +2647,6 @@ public:
|
||||
llvm::CallSite EmitCallOrInvoke(llvm::Value *Callee,
|
||||
ArrayRef<llvm::Value *> Args,
|
||||
const Twine &Name = "");
|
||||
llvm::CallSite EmitCallOrInvoke(llvm::Value *Callee,
|
||||
const Twine &Name = "");
|
||||
llvm::CallSite EmitRuntimeCallOrInvoke(llvm::Value *callee,
|
||||
ArrayRef<llvm::Value*> args,
|
||||
const Twine &name = "");
|
||||
@@ -2765,8 +2733,6 @@ public:
|
||||
bool negateForRightShift);
|
||||
llvm::Value *EmitNeonRShiftImm(llvm::Value *Vec, llvm::Value *Amt,
|
||||
llvm::Type *Ty, bool usgn, const char *name);
|
||||
// Helper functions for EmitAArch64BuiltinExpr.
|
||||
llvm::Value *vectorWrapScalar8(llvm::Value *Op);
|
||||
llvm::Value *vectorWrapScalar16(llvm::Value *Op);
|
||||
llvm::Value *EmitAArch64BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
|
||||
|
||||
@@ -2800,7 +2766,6 @@ public:
|
||||
// ARC primitives.
|
||||
void EmitARCInitWeak(Address addr, llvm::Value *value);
|
||||
void EmitARCDestroyWeak(Address addr);
|
||||
llvm::Value *EmitARCLoadWeak(Address addr);
|
||||
llvm::Value *EmitARCLoadWeakRetained(Address addr);
|
||||
llvm::Value *EmitARCStoreWeak(Address addr, llvm::Value *value, bool ignored);
|
||||
void EmitARCCopyWeak(Address dst, Address src);
|
||||
@@ -2827,8 +2792,6 @@ public:
|
||||
EmitARCStoreStrong(const BinaryOperator *e, bool ignored);
|
||||
|
||||
llvm::Value *EmitObjCThrowOperand(const Expr *expr);
|
||||
|
||||
llvm::Value *EmitObjCProduceObject(QualType T, llvm::Value *Ptr);
|
||||
llvm::Value *EmitObjCConsumeObject(QualType T, llvm::Value *Ptr);
|
||||
llvm::Value *EmitObjCExtendObjectLifetime(QualType T, llvm::Value *Ptr);
|
||||
|
||||
@@ -2881,11 +2844,6 @@ public:
|
||||
/// aggregate type into a temporary LValue.
|
||||
LValue EmitAggExprToLValue(const Expr *E);
|
||||
|
||||
/// EmitGCMemmoveCollectable - Emit special API for structs with object
|
||||
/// pointers.
|
||||
void EmitGCMemmoveCollectable(llvm::Value *DestPtr, llvm::Value *SrcPtr,
|
||||
QualType Ty);
|
||||
|
||||
/// EmitExtendGCLifetime - Given a pointer to an Objective-C object,
|
||||
/// make sure it survives garbage collection until this point.
|
||||
void EmitExtendGCLifetime(llvm::Value *object);
|
||||
|
||||
@@ -489,12 +489,6 @@ llvm::MDNode *CodeGenModule::getTBAAStructInfo(QualType QTy) {
|
||||
return TBAA->getTBAAStructInfo(QTy);
|
||||
}
|
||||
|
||||
llvm::MDNode *CodeGenModule::getTBAAStructTypeInfo(QualType QTy) {
|
||||
if (!TBAA)
|
||||
return nullptr;
|
||||
return TBAA->getTBAAStructTypeInfo(QTy);
|
||||
}
|
||||
|
||||
llvm::MDNode *CodeGenModule::getTBAAStructTagInfo(QualType BaseTy,
|
||||
llvm::MDNode *AccessN,
|
||||
uint64_t O) {
|
||||
|
||||
@@ -643,8 +643,6 @@ public:
|
||||
llvm::MDNode *getTBAAInfo(QualType QTy);
|
||||
llvm::MDNode *getTBAAInfoForVTablePtr();
|
||||
llvm::MDNode *getTBAAStructInfo(QualType QTy);
|
||||
/// Return the MDNode in the type DAG for the given struct type.
|
||||
llvm::MDNode *getTBAAStructTypeInfo(QualType QTy);
|
||||
/// Return the path-aware tag for given base type, access node and offset.
|
||||
llvm::MDNode *getTBAAStructTagInfo(QualType BaseTy, llvm::MDNode *AccessN,
|
||||
uint64_t O);
|
||||
@@ -991,9 +989,6 @@ public:
|
||||
|
||||
void EmitVTable(CXXRecordDecl *Class);
|
||||
|
||||
/// Emit the RTTI descriptors for the builtin types.
|
||||
void EmitFundamentalRTTIDescriptors();
|
||||
|
||||
/// \brief Appends Opts to the "Linker Options" metadata value.
|
||||
void AppendLinkerOptions(StringRef Opts);
|
||||
|
||||
@@ -1073,13 +1068,6 @@ public:
|
||||
/// are emitted lazily.
|
||||
void EmitGlobal(GlobalDecl D);
|
||||
|
||||
bool
|
||||
HasTrivialDestructorBody(ASTContext &Context,
|
||||
const CXXRecordDecl *BaseClassDecl,
|
||||
const CXXRecordDecl *MostDerivedClassDecl);
|
||||
bool
|
||||
FieldHasTrivialDestructorBody(ASTContext &Context, const FieldDecl *Field);
|
||||
|
||||
bool TryEmitDefinitionAsAlias(GlobalDecl Alias, GlobalDecl Target,
|
||||
bool InEveryTU);
|
||||
bool TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D);
|
||||
@@ -1192,9 +1180,6 @@ private:
|
||||
/// as a LLVM constructor or destructor array.
|
||||
void EmitCtorList(const CtorList &Fns, const char *GlobalName);
|
||||
|
||||
/// Emit the RTTI descriptors for the given type.
|
||||
void EmitFundamentalRTTIDescriptor(QualType Type);
|
||||
|
||||
/// Emit any needed decls for which code generation was deferred.
|
||||
void EmitDeferred();
|
||||
|
||||
|
||||
@@ -99,7 +99,6 @@ private:
|
||||
llvm::Function *Fn);
|
||||
void loadRegionCounts(llvm::IndexedInstrProfReader *PGOReader,
|
||||
bool IsInMainFile);
|
||||
void emitCounterVariables();
|
||||
void emitCounterRegionMapping(const Decl *D);
|
||||
|
||||
public:
|
||||
|
||||
@@ -365,7 +365,6 @@ public:
|
||||
return InnermostEHScope;
|
||||
}
|
||||
|
||||
stable_iterator getInnermostActiveEHScope() const;
|
||||
|
||||
/// An unstable reference to a scope-stack depth. Invalidated by
|
||||
/// pushes but not pops.
|
||||
@@ -396,9 +395,6 @@ public:
|
||||
/// to the EH stack.
|
||||
iterator find(stable_iterator save) const;
|
||||
|
||||
/// Removes the cleanup pointed to by the given stable_iterator.
|
||||
void removeCleanup(stable_iterator save);
|
||||
|
||||
/// Add a branch fixup to the current cleanup scope.
|
||||
BranchFixup &addBranchFixup() {
|
||||
assert(hasNormalCleanups() && "adding fixup in scope without cleanups");
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
: CGCXXABI(CGM), BaseClassDescriptorType(nullptr),
|
||||
ClassHierarchyDescriptorType(nullptr),
|
||||
CompleteObjectLocatorType(nullptr), CatchableTypeType(nullptr),
|
||||
ThrowInfoType(nullptr), CatchHandlerTypeType(nullptr) {}
|
||||
ThrowInfoType(nullptr) {}
|
||||
|
||||
bool HasThisReturn(GlobalDecl GD) const override;
|
||||
bool hasMostDerivedReturn(GlobalDecl GD) const override;
|
||||
@@ -534,14 +534,6 @@ private:
|
||||
return llvm::Constant::getAllOnesValue(CGM.IntTy);
|
||||
}
|
||||
|
||||
llvm::Constant *getConstantOrZeroInt(llvm::Constant *C) {
|
||||
return C ? C : getZeroInt();
|
||||
}
|
||||
|
||||
llvm::Value *getValueOrZeroInt(llvm::Value *C) {
|
||||
return C ? C : getZeroInt();
|
||||
}
|
||||
|
||||
CharUnits getVirtualFunctionPrologueThisAdjustment(GlobalDecl GD);
|
||||
|
||||
void
|
||||
@@ -659,18 +651,6 @@ public:
|
||||
|
||||
void emitCXXStructor(const CXXMethodDecl *MD, StructorType Type) override;
|
||||
|
||||
llvm::StructType *getCatchHandlerTypeType() {
|
||||
if (!CatchHandlerTypeType) {
|
||||
llvm::Type *FieldTypes[] = {
|
||||
CGM.IntTy, // Flags
|
||||
CGM.Int8PtrTy, // TypeDescriptor
|
||||
};
|
||||
CatchHandlerTypeType = llvm::StructType::create(
|
||||
CGM.getLLVMContext(), FieldTypes, "eh.CatchHandlerType");
|
||||
}
|
||||
return CatchHandlerTypeType;
|
||||
}
|
||||
|
||||
llvm::StructType *getCatchableTypeType() {
|
||||
if (CatchableTypeType)
|
||||
return CatchableTypeType;
|
||||
@@ -786,7 +766,6 @@ private:
|
||||
llvm::StructType *CatchableTypeType;
|
||||
llvm::DenseMap<uint32_t, llvm::StructType *> CatchableTypeArrayTypeMap;
|
||||
llvm::StructType *ThrowInfoType;
|
||||
llvm::StructType *CatchHandlerTypeType;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user