summaryrefslogtreecommitdiffstats
path: root/contrib/llvm
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2013-12-08 13:56:26 +0000
committerdim <dim@FreeBSD.org>2013-12-08 13:56:26 +0000
commitddaf5e513cf367db28d4d9931248a0a70c4dc73f (patch)
treefb31aab53d230fbcfdd3a275034495818e789932 /contrib/llvm
parente1a441e0c8ff9613538d3e3d5aae1e2e9370aad3 (diff)
downloadFreeBSD-src-ddaf5e513cf367db28d4d9931248a0a70c4dc73f.zip
FreeBSD-src-ddaf5e513cf367db28d4d9931248a0a70c4dc73f.tar.gz
Pull in r196658 from upstream clang trunk:
CodeGen: Don't emit linkage on thunks that aren't emitted because they're vararg. This can happen when we're trying to emit a thunk with available_externally linkage with optimization enabled but bail because it doesn't make sense for vararg functions. [LLVM] PR18098. This should fix clang "Broken module found, compilation aborted" errors when building the qt4-based dvbcut port. Reported by: se MFC after: 3 days
Diffstat (limited to 'contrib/llvm')
-rw-r--r--contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp b/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp
index 069cd5f..8559e4c 100644
--- a/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp
+++ b/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp
@@ -454,10 +454,9 @@ void CodeGenVTables::EmitThunk(GlobalDecl GD, const ThunkInfo &Thunk,
} else {
// Normal thunk body generation.
CodeGenFunction(CGM).GenerateThunk(ThunkFn, FnInfo, GD, Thunk);
+ if (UseAvailableExternallyLinkage)
+ ThunkFn->setLinkage(llvm::GlobalValue::AvailableExternallyLinkage);
}
-
- if (UseAvailableExternallyLinkage)
- ThunkFn->setLinkage(llvm::GlobalValue::AvailableExternallyLinkage);
}
void CodeGenVTables::MaybeEmitThunkAvailableExternally(GlobalDecl GD,
OpenPOWER on IntegriCloud