ARM64: don't emit .subsections_via_symbols on ELF.
authorTim Northover <tnorthover@apple.com>
Fri, 18 Apr 2014 14:54:41 +0000 (14:54 +0000)
committerTim Northover <tnorthover@apple.com>
Fri, 18 Apr 2014 14:54:41 +0000 (14:54 +0000)
Part of PR19455.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206610 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM64/ARM64AsmPrinter.cpp
test/CodeGen/ARM64/subsections.ll [new file with mode: 0644]

index 09dbf55e3f14b00cad18b9f1e3bcb9f35b42d28c..9ea00c8a9381dd2bb9b710543c5c099a0affe08b 100644 (file)
@@ -120,13 +120,15 @@ private:
 //===----------------------------------------------------------------------===//
 
 void ARM64AsmPrinter::EmitEndOfAsmFile(Module &M) {
-  // Funny Darwin hack: This flag tells the linker that no global symbols
-  // contain code that falls through to other global symbols (e.g. the obvious
-  // implementation of multiple entry points).  If this doesn't occur, the
-  // linker can safely perform dead code stripping.  Since LLVM never
-  // generates code that does this, it is always safe to set.
-  OutStreamer.EmitAssemblerFlag(MCAF_SubsectionsViaSymbols);
-  SM.serializeToStackMapSection();
+  if (Subtarget->isTargetMachO()) {
+    // Funny Darwin hack: This flag tells the linker that no global symbols
+    // contain code that falls through to other global symbols (e.g. the obvious
+    // implementation of multiple entry points).  If this doesn't occur, the
+    // linker can safely perform dead code stripping.  Since LLVM never
+    // generates code that does this, it is always safe to set.
+    OutStreamer.EmitAssemblerFlag(MCAF_SubsectionsViaSymbols);
+    SM.serializeToStackMapSection();
+  }
 
   // Emit a .data.rel section containing any stubs that were created.
   if (Subtarget->isTargetELF()) {
diff --git a/test/CodeGen/ARM64/subsections.ll b/test/CodeGen/ARM64/subsections.ll
new file mode 100644 (file)
index 0000000..316e7c3
--- /dev/null
@@ -0,0 +1,5 @@
+; RUN: llc -mtriple=arm64-apple-ios7.0 -o - %s | FileCheck %s --check-prefix=CHECK-MACHO
+; RUN: llc -mtriple=arm64-linux-gnu -o - %s | FileCheck %s --check-prefix=CHECK-ELF
+
+; CHECK-MACHO: .subsections_via_symbols
+; CHECK-ELF-NOT: .subsections_via_symbols
\ No newline at end of file