Make sure -use-init-array has intended effect on all AArch64 ELF targets, not just...
authorKristof Beyls <kristof.beyls@arm.com>
Fri, 10 Jan 2014 13:41:49 +0000 (13:41 +0000)
committerKristof Beyls <kristof.beyls@arm.com>
Fri, 10 Jan 2014 13:41:49 +0000 (13:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198937 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AArch64/AArch64ISelLowering.cpp
lib/Target/AArch64/AArch64TargetObjectFile.cpp
lib/Target/AArch64/AArch64TargetObjectFile.h
test/CodeGen/AArch64/init-array.ll

index ba7827a11e0ae60efc5f1b4aef4ef7e5f987cac7..167281c57e8a1353abb762a3b3be9beb1780bd2a 100644 (file)
@@ -31,12 +31,8 @@ using namespace llvm;
 
 static TargetLoweringObjectFile *createTLOF(AArch64TargetMachine &TM) {
   const AArch64Subtarget *Subtarget = &TM.getSubtarget<AArch64Subtarget>();
-
-  if (Subtarget->isTargetLinux())
-    return new AArch64LinuxTargetObjectFile();
-  if (Subtarget->isTargetELF())
-    return new TargetLoweringObjectFileELF();
-  llvm_unreachable("unknown subtarget type");
+  assert (Subtarget->isTargetELF() && "unknown subtarget type");
+  return new AArch64ElfTargetObjectFile();
 }
 
 AArch64TargetLowering::AArch64TargetLowering(AArch64TargetMachine &TM)
index b4452f5145909002c7d79cfd278f84da346bbd22..663d61944a8fa9a362c6a980f43255d535ece1c9 100644 (file)
@@ -17,8 +17,8 @@
 using namespace llvm;
 
 void
-AArch64LinuxTargetObjectFile::Initialize(MCContext &Ctx,
-                                         const TargetMachine &TM) {
+AArch64ElfTargetObjectFile::Initialize(MCContext &Ctx,
+                                       const TargetMachine &TM) {
   TargetLoweringObjectFileELF::Initialize(Ctx, TM);
   InitializeELF(TM.Options.UseInitArray);
 }
index 2089074f43e8d1a0cd7055fb99625ce0a23b3b80..0f00a789d6f8a82ae4bc5e25b0ac455c9a502dc1 100644 (file)
@@ -20,9 +20,9 @@
 
 namespace llvm {
 
-  /// AArch64LinuxTargetObjectFile - This implementation is used for linux
-  /// AArch64.
-  class AArch64LinuxTargetObjectFile : public TargetLoweringObjectFileELF {
+  /// AArch64ElfTargetObjectFile - This implementation is used for ELF
+  /// AArch64 targets.
+  class AArch64ElfTargetObjectFile : public TargetLoweringObjectFileELF {
     virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
   };
 
index 3ff1c1a86ec644626d1ccc90c5f9dc3677628d9d..076ae27721dff0d8b2f0683946a6a5cff202c18b 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs -use-init-array < %s | FileCheck %s
+; RUN: llc -mtriple=aarch64-none-none-eabi -verify-machineinstrs -use-init-array < %s | FileCheck %s
 
 define internal void @_GLOBAL__I_a() section ".text.startup" {
   ret void