mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Handle a symbol being undefined.
This can happen if: * It is present in a comdat in one file. * It is not present in the comdat of the file that is kept. * Is is not used. This should fix the LTO boostrap. Thanks to Takumi NAKAMURA for setting up the bot! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225983 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
81e68c9023
commit
5f92811f30
@ -1,4 +1,9 @@
|
|||||||
$c2 = comdat any
|
$c2 = comdat any
|
||||||
|
$c1 = comdat any
|
||||||
|
|
||||||
|
; This is only present in this file. The linker will keep $c1 from the first
|
||||||
|
; file and this will be undefined.
|
||||||
|
@will_be_undefined = global i32 1, comdat($c1)
|
||||||
|
|
||||||
@v1 = weak_odr global i32 41, comdat($c2)
|
@v1 = weak_odr global i32 41, comdat($c2)
|
||||||
define weak_odr protected i32 @f1(i8* %this) comdat($c2) {
|
define weak_odr protected i32 @f1(i8* %this) comdat($c2) {
|
||||||
|
@ -629,10 +629,14 @@ getModuleForFile(LLVMContext &Context, claimed_file &F, raw_fd_ostream *ApiFile,
|
|||||||
case LDPR_RESOLVED_IR:
|
case LDPR_RESOLVED_IR:
|
||||||
case LDPR_RESOLVED_EXEC:
|
case LDPR_RESOLVED_EXEC:
|
||||||
case LDPR_RESOLVED_DYN:
|
case LDPR_RESOLVED_DYN:
|
||||||
case LDPR_UNDEF:
|
|
||||||
assert(GV->isDeclarationForLinker());
|
assert(GV->isDeclarationForLinker());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LDPR_UNDEF:
|
||||||
|
assert(GV->hasComdat());
|
||||||
|
Drop.insert(GV);
|
||||||
|
break;
|
||||||
|
|
||||||
case LDPR_PREVAILING_DEF_IRONLY: {
|
case LDPR_PREVAILING_DEF_IRONLY: {
|
||||||
keepGlobalValue(*GV, KeptAliases);
|
keepGlobalValue(*GV, KeptAliases);
|
||||||
if (!Used.count(GV)) {
|
if (!Used.count(GV)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user