mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 06:00:28 +00:00
Fix use of uninitialized variable.
Fixes linking bitcode files that use the new style comdats for constructors with ones that don't. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215364 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cb7da63124
commit
69ca26cc97
@ -644,15 +644,19 @@ bool ModuleLinker::computeResultingSelectionKind(StringRef ComdatName,
|
||||
bool ModuleLinker::getComdatResult(const Comdat *SrcC,
|
||||
Comdat::SelectionKind &Result,
|
||||
bool &LinkFromSrc) {
|
||||
Comdat::SelectionKind SSK = SrcC->getSelectionKind();
|
||||
StringRef ComdatName = SrcC->getName();
|
||||
Module::ComdatSymTabType &ComdatSymTab = DstM->getComdatSymbolTable();
|
||||
Module::ComdatSymTabType::iterator DstCI = ComdatSymTab.find(ComdatName);
|
||||
|
||||
if (DstCI == ComdatSymTab.end())
|
||||
if (DstCI == ComdatSymTab.end()) {
|
||||
// Use the comdat if it is only available in one of the modules.
|
||||
LinkFromSrc = true;
|
||||
Result = SSK;
|
||||
return false;
|
||||
}
|
||||
|
||||
const Comdat *DstC = &DstCI->second;
|
||||
Comdat::SelectionKind SSK = SrcC->getSelectionKind();
|
||||
Comdat::SelectionKind DSK = DstC->getSelectionKind();
|
||||
return computeResultingSelectionKind(ComdatName, SSK, DSK, Result,
|
||||
LinkFromSrc);
|
||||
|
7
test/Linker/Inputs/constructor-comdat.ll
Normal file
7
test/Linker/Inputs/constructor-comdat.ll
Normal file
@ -0,0 +1,7 @@
|
||||
define weak_odr void @_ZN3fooIiEC2Ev() {
|
||||
ret void
|
||||
}
|
||||
|
||||
define weak_odr void @_ZN3fooIiEC1Ev() {
|
||||
ret void
|
||||
}
|
13
test/Linker/constructor-comdat.ll
Normal file
13
test/Linker/constructor-comdat.ll
Normal file
@ -0,0 +1,13 @@
|
||||
; RUN: llvm-link %s %p/Inputs/constructor-comdat.ll -S -o - 2>&1 | FileCheck %s
|
||||
; RUN: llvm-link %p/Inputs/constructor-comdat.ll %s -S -o - 2>&1 | FileCheck %s
|
||||
|
||||
$_ZN3fooIiEC5Ev = comdat any
|
||||
; CHECK: $_ZN3fooIiEC5Ev = comdat any
|
||||
|
||||
@_ZN3fooIiEC1Ev = weak_odr alias void ()* @_ZN3fooIiEC2Ev
|
||||
; CHECK: @_ZN3fooIiEC1Ev = weak_odr alias void ()* @_ZN3fooIiEC2Ev
|
||||
|
||||
; CHECK: define weak_odr void @_ZN3fooIiEC2Ev() comdat $_ZN3fooIiEC5Ev {
|
||||
define weak_odr void @_ZN3fooIiEC2Ev() comdat $_ZN3fooIiEC5Ev {
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user