Commit 330ff7f9 authored by Tom Stellard's avatar Tom Stellard
Browse files

Merging r198937:

------------------------------------------------------------------------
r198937 | kristof.beyls | 2014-01-10 08:41:49 -0500 (Fri, 10 Jan 2014) | 2 lines

Make sure -use-init-array has intended effect on all AArch64 ELF targets, not just linux.

------------------------------------------------------------------------

llvm-svn: 206065
parent 18959c31
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -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)
+7 −0
Original line number Diff line number Diff line
@@ -22,3 +22,10 @@ AArch64LinuxTargetObjectFile::Initialize(MCContext &Ctx,
  TargetLoweringObjectFileELF::Initialize(Ctx, TM);
  InitializeELF(TM.Options.UseInitArray);
}

void
AArch64ElfTargetObjectFile::Initialize(MCContext &Ctx,
                                       const TargetMachine &TM) {
  TargetLoweringObjectFileELF::Initialize(Ctx, TM);
  InitializeELF(TM.Options.UseInitArray);
}
+6 −2
Original line number Diff line number Diff line
@@ -20,8 +20,12 @@

namespace llvm {

  /// AArch64LinuxTargetObjectFile - This implementation is used for linux
  /// AArch64.
  /// AArch64ElfTargetObjectFile - This implementation is used for ELF
  /// AArch64 targets.
  class AArch64ElfTargetObjectFile : public TargetLoweringObjectFileELF {
    virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
  };

  class AArch64LinuxTargetObjectFile : public TargetLoweringObjectFileELF {
    virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
  };
+1 −0
Original line number Diff line number Diff line
; 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