From bf6e67f2e9edcf36ec6e20228766cc396d63e4a0 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 8 May 2014 15:44:45 +0000 Subject: Simplify a few cast<>s. llvm-svn: 208331 --- clang/lib/CodeGen/CGVTables.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'clang/lib/CodeGen/CGVTables.cpp') diff --git a/clang/lib/CodeGen/CGVTables.cpp b/clang/lib/CodeGen/CGVTables.cpp index 08537d5..14cad8b 100644 --- a/clang/lib/CodeGen/CGVTables.cpp +++ b/clang/lib/CodeGen/CGVTables.cpp @@ -321,27 +321,30 @@ void CodeGenVTables::emitThunk(GlobalDecl GD, const ThunkInfo &Thunk, const CGFunctionInfo &FnInfo = CGM.getTypes().arrangeGlobalDeclaration(GD); // FIXME: re-use FnInfo in this computation. - llvm::Constant *Entry = CGM.GetAddrOfThunk(GD, Thunk); - + llvm::Constant *C = CGM.GetAddrOfThunk(GD, Thunk); + llvm::GlobalValue *Entry; + // Strip off a bitcast if we got one back. - if (llvm::ConstantExpr *CE = dyn_cast(Entry)) { + if (llvm::ConstantExpr *CE = dyn_cast(C)) { assert(CE->getOpcode() == llvm::Instruction::BitCast); - Entry = CE->getOperand(0); + Entry = cast(CE->getOperand(0)); + } else { + Entry = cast(C); } - + // There's already a declaration with the same name, check if it has the same // type or if we need to replace it. - if (cast(Entry)->getType()->getElementType() != + if (Entry->getType()->getElementType() != CGM.getTypes().GetFunctionTypeForVTable(GD)) { - llvm::GlobalValue *OldThunkFn = cast(Entry); - + llvm::GlobalValue *OldThunkFn = Entry; + // If the types mismatch then we have to rewrite the definition. assert(OldThunkFn->isDeclaration() && "Shouldn't replace non-declaration"); // Remove the name from the old thunk function and get a new thunk. OldThunkFn->setName(StringRef()); - Entry = CGM.GetAddrOfThunk(GD, Thunk); + Entry = cast(CGM.GetAddrOfThunk(GD, Thunk)); // If needed, replace the old thunk with a bitcast. if (!OldThunkFn->use_empty()) { -- cgit v1.1