[llvm] r221156 - Handle ctor/init_array initialization.

Sid Manning sidneym at codeaurora.org
Mon Nov 3 06:56:06 PST 2014


Author: sidneym
Date: Mon Nov  3 08:56:05 2014
New Revision: 221156

URL: http://llvm.org/viewvc/llvm-project?rev=221156&view=rev
Log:
Handle ctor/init_array initialization.

Hexagon was not calling InitializeELF and could not select between
ctors and init_array.

Phabricator revision: http://reviews.llvm.org/D6061

Added:
    llvm/trunk/test/CodeGen/Hexagon/ctor.ll
Modified:
    llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp

Modified: llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp?rev=221156&r1=221155&r2=221156&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp Mon Nov  3 08:56:05 2014
@@ -31,7 +31,7 @@ static cl::opt<int> SmallDataThreshold("
 void HexagonTargetObjectFile::Initialize(MCContext &Ctx,
                                          const TargetMachine &TM) {
   TargetLoweringObjectFileELF::Initialize(Ctx, TM);
-
+  InitializeELF(TM.Options.UseInitArray);
 
   SmallDataSection =
     getContext().getELFSection(".sdata", ELF::SHT_PROGBITS,

Added: llvm/trunk/test/CodeGen/Hexagon/ctor.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Hexagon/ctor.ll?rev=221156&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Hexagon/ctor.ll (added)
+++ llvm/trunk/test/CodeGen/Hexagon/ctor.ll Mon Nov  3 08:56:05 2014
@@ -0,0 +1,14 @@
+; RUN: llc -march=hexagon < %s  | FileCheck -check-prefix=INITARRAY %s
+; RUN: llc -march=hexagon < %s  -use-ctors | FileCheck -check-prefix=CTOR %s
+
+ at llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_P10066.ii, i8* null }]
+define internal void @_GLOBAL__sub_I_P10066.ii() {
+entry:
+  ret void
+}
+
+;CTOR: .section	.ctors
+;CTOR-NOT:  section	.init_array
+
+;INITARRAY: section	.init_array
+;INITARRAY-NOT: .section	.ctors





More information about the llvm-commits mailing list