mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-03 14:08:57 +00:00
9994b911f4
This patch does the following: * Fix FIXME on `needsStackRealignment`: it is now shared between multiple targets, implemented in `TargetRegisterInfo`, and isn't `virtual` anymore. This will break out-of-tree targets, silently if they used `virtual` and with a build error if they used `override`. * Factor out `canRealignStack` as a `virtual` function on `TargetRegisterInfo`, by default only looks for the `no-realign-stack` function attribute. Multiple targets duplicated the same `needsStackRealignment` code: - Aarch64. - ARM. - Mips almost: had extra `DEBUG` diagnostic, which the default implementation now has. - PowerPC. - WebAssembly. - x86 almost: has an extra `-force-align-stack` option, which the default implementation now has. The default implementation of `needsStackRealignment` used to just return `false`. My current patch changes the behavior by simply using the above shared behavior. This affects: - AMDGPU - BPF - CppBackend - MSP430 - NVPTX - Sparc - SystemZ - XCore - Out-of-tree targets This is a breaking change! `make check` passes. The only implementation of the `virtual` function (besides the slight different in x86) was Hexagon (which did `MF.getFrameInfo()->getMaxAlignment() > 8`), and potentially some out-of-tree targets. Hexagon now uses the default implementation. `needsStackRealignment` was being overwritten in `<Target>GenRegisterInfo.inc`, to return `false` as the default also did. That was odd and is now gone. Reviewers: sunfish Subscribers: aemerson, llvm-commits, jfb Differential Revision: http://reviews.llvm.org/D11160 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242727 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
AsmParser | ||
Disassembler | ||
InstPrinter | ||
MCTargetDesc | ||
TargetInfo | ||
CMakeLists.txt | ||
LLVMBuild.txt | ||
Makefile | ||
MicroMips32r6InstrFormats.td | ||
MicroMips32r6InstrInfo.td | ||
MicroMipsInstrFormats.td | ||
MicroMipsInstrFPU.td | ||
MicroMipsInstrInfo.td | ||
Mips16FrameLowering.cpp | ||
Mips16FrameLowering.h | ||
Mips16HardFloat.cpp | ||
Mips16HardFloatInfo.cpp | ||
Mips16HardFloatInfo.h | ||
Mips16InstrFormats.td | ||
Mips16InstrInfo.cpp | ||
Mips16InstrInfo.h | ||
Mips16InstrInfo.td | ||
Mips16ISelDAGToDAG.cpp | ||
Mips16ISelDAGToDAG.h | ||
Mips16ISelLowering.cpp | ||
Mips16ISelLowering.h | ||
Mips16RegisterInfo.cpp | ||
Mips16RegisterInfo.h | ||
Mips32r6InstrFormats.td | ||
Mips32r6InstrInfo.td | ||
Mips64InstrInfo.td | ||
Mips64r6InstrInfo.td | ||
Mips.h | ||
Mips.td | ||
MipsAnalyzeImmediate.cpp | ||
MipsAnalyzeImmediate.h | ||
MipsAsmPrinter.cpp | ||
MipsAsmPrinter.h | ||
MipsCallingConv.td | ||
MipsCCState.cpp | ||
MipsCCState.h | ||
MipsCondMov.td | ||
MipsConstantIslandPass.cpp | ||
MipsDelaySlotFiller.cpp | ||
MipsDSPInstrFormats.td | ||
MipsDSPInstrInfo.td | ||
MipsFastISel.cpp | ||
MipsFrameLowering.cpp | ||
MipsFrameLowering.h | ||
MipsInstrFormats.td | ||
MipsInstrFPU.td | ||
MipsInstrInfo.cpp | ||
MipsInstrInfo.h | ||
MipsInstrInfo.td | ||
MipsISelDAGToDAG.cpp | ||
MipsISelDAGToDAG.h | ||
MipsISelLowering.cpp | ||
MipsISelLowering.h | ||
MipsLongBranch.cpp | ||
MipsMachineFunction.cpp | ||
MipsMachineFunction.h | ||
MipsMCInstLower.cpp | ||
MipsMCInstLower.h | ||
MipsModuleISelDAGToDAG.cpp | ||
MipsMSAInstrFormats.td | ||
MipsMSAInstrInfo.td | ||
MipsOptimizePICCall.cpp | ||
MipsOptionRecord.h | ||
MipsOs16.cpp | ||
MipsRegisterInfo.cpp | ||
MipsRegisterInfo.h | ||
MipsRegisterInfo.td | ||
MipsSchedule.td | ||
MipsSEFrameLowering.cpp | ||
MipsSEFrameLowering.h | ||
MipsSEInstrInfo.cpp | ||
MipsSEInstrInfo.h | ||
MipsSEISelDAGToDAG.cpp | ||
MipsSEISelDAGToDAG.h | ||
MipsSEISelLowering.cpp | ||
MipsSEISelLowering.h | ||
MipsSERegisterInfo.cpp | ||
MipsSERegisterInfo.h | ||
MipsSubtarget.cpp | ||
MipsSubtarget.h | ||
MipsTargetMachine.cpp | ||
MipsTargetMachine.h | ||
MipsTargetObjectFile.cpp | ||
MipsTargetObjectFile.h | ||
MipsTargetStreamer.h | ||
MSA.txt |