summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2018-04-10 00:53:16 +0000
committerVitaly Buka <vitalybuka@google.com>2018-04-10 00:53:16 +0000
commit6c05a3bb718d562859dcb164fe1a85756da12e8f (patch)
tree8ea6bc511e7a7ddb7f439ab3b1bf7c1bf070a2d2
parent0274632ee6eede14d2eb7efeb488c1775611a9dd (diff)
downloadbcm5719-llvm-6c05a3bb718d562859dcb164fe1a85756da12e8f.tar.gz
bcm5719-llvm-6c05a3bb718d562859dcb164fe1a85756da12e8f.zip
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
-rw-r--r--llvm/lib/Object/RecordStreamer.cpp5
-rw-r--r--llvm/test/LTO/X86/symver-asm3.ll6
2 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/Object/RecordStreamer.cpp b/llvm/lib/Object/RecordStreamer.cpp
index 74130901d32..21577bb5696 100644
--- a/llvm/lib/Object/RecordStreamer.cpp
+++ b/llvm/lib/Object/RecordStreamer.cpp
@@ -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);
}
diff --git a/llvm/test/LTO/X86/symver-asm3.ll b/llvm/test/LTO/X86/symver-asm3.ll
index 90cee28bf60..0ae8f88c489 100644
--- a/llvm/test/LTO/X86/symver-asm3.ll
+++ b/llvm/test/LTO/X86/symver-asm3.ll
@@ -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
OpenPOWER on IntegriCloud