XCore target: fix weak linkage attribute handling
authorRobert Lytton <robert@xmos.com>
Mon, 9 Sep 2013 10:41:57 +0000 (10:41 +0000)
committerRobert Lytton <robert@xmos.com>
Mon, 9 Sep 2013 10:41:57 +0000 (10:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190298 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.cpp
test/CodeGen/XCore/linkage.ll [new file with mode: 0644]

index 6f4455117a0cc32bcd671421b07c64c61bc8cbe3..235028cf595af13d400093328919a8efe174d7a0 100644 (file)
@@ -23,7 +23,6 @@ XCoreMCAsmInfo::XCoreMCAsmInfo(StringRef TT) {
     
   PrivateGlobalPrefix = ".L";
   AscizDirective = ".asciiz";
-  WeakDefDirective = "\t.weak\t";
   WeakRefDirective = "\t.weak\t";
 
   // Debug
diff --git a/test/CodeGen/XCore/linkage.ll b/test/CodeGen/XCore/linkage.ll
new file mode 100644 (file)
index 0000000..1291584
--- /dev/null
@@ -0,0 +1,17 @@
+; RUN: llc < %s -march=xcore | FileCheck %s
+
+; CHECK: .weak fd
+define weak void @fd() {
+  call void @fr(i32* @gd, i32* @gr)
+  ret void
+}
+
+; CHECK: .weak gd
+@gd = weak global i32 0
+
+; CHECK: .weak gr
+@gr = extern_weak global i32
+
+; CHECK: .weak fr
+declare extern_weak void @fr(i32*, i32*)
+