summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/RISCV/RISCVTargetObjectFile.h
diff options
context:
space:
mode:
authorMandeep Singh Grang <mgrang@codeaurora.org>2018-03-24 18:37:19 +0000
committerMandeep Singh Grang <mgrang@codeaurora.org>2018-03-24 18:37:19 +0000
commit98bc25a0f2bf169ef13f4dfc8ad3cc863731a8e7 (patch)
tree6e598dc90726dcde313d8463999cf7e7775d2f17 /llvm/lib/Target/RISCV/RISCVTargetObjectFile.h
parent2b5967f510a8b73f3bd883d57120ee2d16db9488 (diff)
downloadbcm5719-llvm-98bc25a0f2bf169ef13f4dfc8ad3cc863731a8e7.tar.gz
bcm5719-llvm-98bc25a0f2bf169ef13f4dfc8ad3cc863731a8e7.zip
[RISCV] Use init_array instead of ctors for RISCV target, by default
Summary: LLVM defaults to the newer .init_array/.fini_array scheme for static constructors rather than the less desirable .ctors/.dtors (the UseCtors flag defaults to false). This wasn't being respected in the RISC-V backend because it fails to call TargetLoweringObjectFileELF::InitializeELF with the the appropriate flag for UseInitArray. This patch fixes this by implementing RISCVELFTargetObjectFile and overriding its Initialize method to call InitializeELF(TM.Options.UseInitArray). Reviewers: asb, apazos Reviewed By: asb Subscribers: mgorny, rbar, johnrusso, simoncook, jordy.potman.lists, sabuasal, niosHD, kito-cheng, shiva0217, llvm-commits Differential Revision: https://reviews.llvm.org/D44750 llvm-svn: 328433
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVTargetObjectFile.h')
-rw-r--r--llvm/lib/Target/RISCV/RISCVTargetObjectFile.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVTargetObjectFile.h b/llvm/lib/Target/RISCV/RISCVTargetObjectFile.h
new file mode 100644
index 00000000000..5467220301c
--- /dev/null
+++ b/llvm/lib/Target/RISCV/RISCVTargetObjectFile.h
@@ -0,0 +1,25 @@
+//===-- RISCVTargetObjectFile.h - RISCV Object Info -*- C++ ---------*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_RISCV_RISCVTARGETOBJECTFILE_H
+#define LLVM_LIB_TARGET_RISCV_RISCVTARGETOBJECTFILE_H
+
+#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
+
+namespace llvm {
+class RISCVTargetMachine;
+
+/// This implementation is used for RISCV ELF targets.
+class RISCVELFTargetObjectFile : public TargetLoweringObjectFileELF {
+ void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
+};
+
+} // end namespace llvm
+
+#endif
OpenPOWER on IntegriCloud