OSDN Git Service

[X86] Reland D71360 Clean up UseInitArray initialization for X86ELFTargetObjectFile
authorFangrui Song <maskray@google.com>
Fri, 20 Mar 2020 05:58:42 +0000 (22:58 -0700)
committerFangrui Song <maskray@google.com>
Sat, 21 Mar 2020 04:57:34 +0000 (21:57 -0700)
commit85c30f3374d9f7f1124241ab09ce377fcb08d24d
treeb59f892142fad4e0a7f395a0640f3511ada71bd8
parent7ece7c0faae39b5c57662b28e0e51b2a82ad34c3
[X86] Reland D71360 Clean up UseInitArray initialization for X86ELFTargetObjectFile

-fuse-init-array is now the CC1 default but TargetLoweringObjectFileELF::UseInitArray still defaults to false.
The following two unknown OS target triples continue using .ctors/.dtors because InitializeELF is not called.

clang -target i386 -c a.c
clang -target x86_64 -c a.c

This cleanup fixes this as a bonus.

X86SpeculativeLoadHardeningPass::tracePredStateThroughCall can call
MCContext::createTempSymbol before TargetLoweringObjectFileELF::Initialize().
We need to call TargetLoweringObjectFileELF::Initialize() ealier.

test/CodeGen/X86/speculative-load-hardening-indirect.ll

Differential Revision: https://reviews.llvm.org/D71360
14 files changed:
llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
llvm/lib/Target/AArch64/AArch64TargetObjectFile.cpp
llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp
llvm/lib/Target/Lanai/LanaiTargetObjectFile.cpp
llvm/lib/Target/Mips/MipsTargetObjectFile.cpp
llvm/lib/Target/PowerPC/PPCTargetObjectFile.cpp
llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp
llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp
llvm/lib/Target/X86/X86TargetMachine.cpp
llvm/lib/Target/X86/X86TargetObjectFile.cpp
llvm/lib/Target/X86/X86TargetObjectFile.h
llvm/test/CodeGen/X86/constructor.ll
llvm/test/CodeGen/X86/init-priority.ll
llvm/tools/llc/llc.cpp