summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMehdi Amini <mehdi.amini@apple.com>2016-08-03 03:51:42 +0000
committerMehdi Amini <mehdi.amini@apple.com>2016-08-03 03:51:42 +0000
commitf9721ba5f1ad9cb0818e2a90079cf9336586f5c5 (patch)
tree8e7a9183f9baee45c2c126c0aa3b3dd923c3eaff
parentdcaec77936095744ad9b0f8a0948221d495620c1 (diff)
downloadbcm5719-llvm-f9721ba5f1ad9cb0818e2a90079cf9336586f5c5.tar.gz
bcm5719-llvm-f9721ba5f1ad9cb0818e2a90079cf9336586f5c5.zip
RecordStreamer: handle inline asm "lazy_reference" and mark symbols as "used"
llvm-svn: 277564
-rw-r--r--llvm/lib/Object/RecordStreamer.cpp2
-rw-r--r--llvm/test/Object/X86/asm-lazy-reference.ll15
2 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/Object/RecordStreamer.cpp b/llvm/lib/Object/RecordStreamer.cpp
index f03bd5e5fb9..cd3964ad391 100644
--- a/llvm/lib/Object/RecordStreamer.cpp
+++ b/llvm/lib/Object/RecordStreamer.cpp
@@ -92,6 +92,8 @@ bool RecordStreamer::EmitSymbolAttribute(MCSymbol *Symbol,
MCSymbolAttr Attribute) {
if (Attribute == MCSA_Global || Attribute == MCSA_Weak)
markGlobal(*Symbol, Attribute);
+ if (Attribute == MCSA_LazyReference)
+ markUsed(*Symbol);
return true;
}
diff --git a/llvm/test/Object/X86/asm-lazy-reference.ll b/llvm/test/Object/X86/asm-lazy-reference.ll
new file mode 100644
index 00000000000..480cbaa2497
--- /dev/null
+++ b/llvm/test/Object/X86/asm-lazy-reference.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-as < %s -o - | llvm-nm - | FileCheck %s
+
+target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
+target triple = "i386-apple-macosx10.8.0"
+
+; Verify that llvm-nm handles correctly module level ASM, including "lazy_reference"
+
+; CHECK: U .objc_class_name_Bar
+; CHECK: U .objc_class_name_Foo
+; CHECK: T .objc_class_name_FooSubClass
+
+module asm "\09.objc_class_name_FooSubClass=0"
+module asm "\09.globl .objc_class_name_FooSubClass"
+module asm "\09.lazy_reference .objc_class_name_Foo"
+module asm "\09.lazy_reference .objc_class_name_Bar"
OpenPOWER on IntegriCloud