diff options
author | Mandeep Singh Grang <mgrang@codeaurora.org> | 2018-03-24 18:37:19 +0000 |
---|---|---|
committer | Mandeep Singh Grang <mgrang@codeaurora.org> | 2018-03-24 18:37:19 +0000 |
commit | 98bc25a0f2bf169ef13f4dfc8ad3cc863731a8e7 (patch) | |
tree | 6e598dc90726dcde313d8463999cf7e7775d2f17 /llvm/lib/Target/RISCV/RISCVTargetObjectFile.h | |
parent | 2b5967f510a8b73f3bd883d57120ee2d16db9488 (diff) | |
download | bcm5719-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.h | 25 |
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 |