diff options
author | dim <dim@FreeBSD.org> | 2013-12-08 13:56:26 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2013-12-08 13:56:26 +0000 |
commit | ddaf5e513cf367db28d4d9931248a0a70c4dc73f (patch) | |
tree | fb31aab53d230fbcfdd3a275034495818e789932 /contrib/llvm | |
parent | e1a441e0c8ff9613538d3e3d5aae1e2e9370aad3 (diff) | |
download | FreeBSD-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.cpp | 5 |
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, |