Object: Don't mark alias unconditionally defined

Summary:
Can't remove EmitAssignment override as llvm/test/Object/X86/nm-bitcodeweak.test
expects this behavior.

Reviewers: pcc, espindola

Subscribers: mehdi_amini, hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D44596

llvm-svn: 329651
This commit is contained in:
Vitaly Buka 2018-04-10 00:53:16 +00:00
parent 0274632ee6
commit 6c05a3bb71
2 changed files with 8 additions and 3 deletions

View File

@ -216,7 +216,10 @@ void RecordStreamer::flushSymverDirectives() {
// TODO: Handle "@@@". Depending on SymbolAttribute value it needs to be
// converted into @ or @@.
const MCExpr *Value = MCSymbolRefExpr::create(Aliasee, getContext());
EmitAssignment(Alias, Value);
if (IsDefined)
markDefined(*Alias);
// Don't use EmitAssignment override as it always marks alias as defined.
MCStreamer::EmitAssignment(Alias, Value);
if (Attr != MCSA_Invalid)
EmitSymbolAttribute(Alias, Attr);
}

View File

@ -12,9 +12,11 @@ module asm "foo1:"
module asm ".symver foo1, foo@@@VER1"
; CHECK-DAG: t foo@@VER1
module asm ".global foo2"
module asm ".symver foo2, foo@@@VER2"
; CHECK-DAG: U foo2
; CHECK-DAG: t foo@VER2
; CHECK-DAG: U foo@VER2
module asm "call foo2"
module asm ".symver foo3, foo@@@VER3"
; CHECK-DAG: t foo@@VER3
@ -23,7 +25,7 @@ module asm ".symver foo4, foo@@@VER4"
; CHECK-DAG: T foo@@VER4
module asm ".symver foo5, foo@@@VER5"
; CHECK-DAG: T foo@VER5
; CHECK-DAG: U foo@VER5
module asm "foo3:"
; CHECK-DAG: t foo3