llvm-project/llvm/lib/Target/Hexagon
JF Bastien e4d22d59d1 Targets: commonize some stack realignment code
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

llvm-svn: 242727
2015-07-20 22:51:32 +00:00
..
Disassembler Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MCTargetDesc MC: Remove MCSubtargetInfo() default constructor 2015-07-10 22:43:42 +00:00
TargetInfo
BitTracker.cpp [Hexagon] Use composition instead of inheritance from STL types 2015-07-18 17:43:23 +00:00
BitTracker.h [Hexagon] Use composition instead of inheritance from STL types 2015-07-18 17:43:23 +00:00
CMakeLists.txt [Hexagon] Generate MUX from conditional transfers when dot-new not possible 2015-07-20 21:23:25 +00:00
Hexagon.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Hexagon.td Make the Hexagon ISelDAGToDAG pass set the subtarget dynamically 2015-03-21 03:12:59 +00:00
HexagonAsmPrinter.cpp MC: Add target hook to control symbol quoting 2015-06-09 00:31:39 +00:00
HexagonAsmPrinter.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonBitTracker.cpp [Hexagon] Use composition instead of inheritance from STL types 2015-07-18 17:43:23 +00:00
HexagonBitTracker.h [Hexagon] Move BitTracker into the llvm namespace and remove redundant qualifications 2015-07-13 20:38:16 +00:00
HexagonCFGOptimizer.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonCallingConv.td
HexagonCommonGEP.cpp [Hexagon] Use composition instead of inheritance from STL types 2015-07-18 17:43:23 +00:00
HexagonCopyToCombine.cpp [Hexagon] Moving pass declarations out of header and in to implementation files. Removing unused function getSubtargetInfo from HexagonMCCodeEmitter.cpp Removing deletion of copy construction and assignment operator since parent already deletes it. 2015-06-15 19:05:35 +00:00
HexagonExpandCondsets.cpp [Hexagon] Add missing preamble to a source file 2015-07-09 15:40:25 +00:00
HexagonExpandPredSpillCode.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonFixupHwLoops.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonFrameLowering.cpp MachineRegisterInfo: Remove UsedPhysReg infrastructure 2015-07-14 17:52:07 +00:00
HexagonFrameLowering.h PrologEpilogInserter: Rewrite API to determine callee save regsiters. 2015-07-14 17:17:13 +00:00
HexagonGenExtract.cpp [Hexagon] Generate "extract" instructions more aggressively 2015-07-14 17:07:24 +00:00
HexagonGenInsert.cpp [Hexagon] Generate "insert" instructions more aggressively 2015-07-08 14:47:34 +00:00
HexagonGenMux.cpp [Hexagon] Generate MUX from conditional transfers when dot-new not possible 2015-07-20 21:23:25 +00:00
HexagonGenPredicate.cpp Fix NDEBUG build warning 2015-07-14 21:03:24 +00:00
HexagonHardwareLoops.cpp [Hexagon] Moving pass declarations out of header and in to implementation files. Removing unused function getSubtargetInfo from HexagonMCCodeEmitter.cpp Removing deletion of copy construction and assignment operator since parent already deletes it. 2015-06-15 19:05:35 +00:00
HexagonISelDAGToDAG.cpp Use more foreach loops in SelectionDAG. NFC 2015-07-14 23:43:29 +00:00
HexagonISelLowering.cpp [Hexagon] Add support for atomic RMW operations 2015-07-09 14:51:21 +00:00
HexagonISelLowering.h [Hexagon] Add support for atomic RMW operations 2015-07-09 14:51:21 +00:00
HexagonInstrFormats.td [Hexagon] Disassembling, printing, and emitting instructions a whole-bundle at a time which is the semantic unit for Hexagon. Fixing tests to use the new format. Disabling tests in the direct object emission path for a followup patch. 2015-05-29 14:44:13 +00:00
HexagonInstrFormatsV4.td [Hexagon] Reapply r239097 with tests corrected for shuffling and duplexing. 2015-06-05 16:00:11 +00:00
HexagonInstrInfo.cpp [CodeGen] ArrayRef'ize cond/pred in various TII APIs. NFC. 2015-06-11 19:30:37 +00:00
HexagonInstrInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonInstrInfo.td Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
HexagonInstrInfoV3.td [Hexagon] Removing v2-4 flags. V4 is the minimum supported version. 2015-02-09 21:07:35 +00:00
HexagonInstrInfoV4.td [Hexagon] Reapply r239097 with tests corrected for shuffling and duplexing. 2015-06-05 16:00:11 +00:00
HexagonInstrInfoV5.td Eliminate constant-extender profitability checks from Hexagon isel 2015-03-12 00:19:59 +00:00
HexagonInstrInfoVector.td [Hexagon] Add support for vector instructions 2015-03-19 16:33:08 +00:00
HexagonIntrinsics.td [Hexagon] Making intrinsic tests agnostic to register allocation. Narrowing intrinsic parameters to appropriate width. 2015-06-12 19:57:32 +00:00
HexagonIntrinsicsDerived.td [Hexagon] Deleting a lot of old variants of intrinsics and updating references. 2015-01-28 18:29:11 +00:00
HexagonIntrinsicsV3.td [Hexagon] Converting XTYPE/SHIFT intrinsics. Cleaning out old intrinsic patterns and updating tests. 2015-02-03 20:40:52 +00:00
HexagonIntrinsicsV4.td Eliminate constant-extender profitability checks from Hexagon isel 2015-03-12 00:19:59 +00:00
HexagonIntrinsicsV5.td [Hexagon] Converting XTYPE/SHIFT intrinsics. Cleaning out old intrinsic patterns and updating tests. 2015-02-03 20:40:52 +00:00
HexagonIsetDx.td [Hexagon] Reapply r239097 with tests corrected for shuffling and duplexing. 2015-06-05 16:00:11 +00:00
HexagonMCInstLower.cpp MC: Clean up MCExpr naming. NFC. 2015-05-30 01:25:56 +00:00
HexagonMachineFunctionInfo.cpp
HexagonMachineFunctionInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonMachineScheduler.cpp Move HexagonMachineScheduler to use the subtarget off of the 2015-02-02 22:11:40 +00:00
HexagonMachineScheduler.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonNewValueJump.cpp [Hexagon] Moving pass declarations out of header and in to implementation files. Removing unused function getSubtargetInfo from HexagonMCCodeEmitter.cpp Removing deletion of copy construction and assignment operator since parent already deletes it. 2015-06-15 19:05:35 +00:00
HexagonOperands.td [Hexagon] Making intrinsic tests agnostic to register allocation. Narrowing intrinsic parameters to appropriate width. 2015-06-12 19:57:32 +00:00
HexagonPeephole.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonRegisterInfo.cpp Targets: commonize some stack realignment code 2015-07-20 22:51:32 +00:00
HexagonRegisterInfo.h Targets: commonize some stack realignment code 2015-07-20 22:51:32 +00:00
HexagonRegisterInfo.td [Hexagon] Adding vector shift instructions and tests. 2015-01-30 21:58:46 +00:00
HexagonRemoveSZExtArgs.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonSchedule.td [Hexagon] Add new InstrItinClass to support timing classes. 2014-05-08 18:47:08 +00:00
HexagonScheduleV4.td [Hexagon] Add new InstrItinClass to support timing classes. 2014-05-08 18:47:08 +00:00
HexagonSelectCCInfo.td
HexagonSelectionDAGInfo.cpp Remove getDataLayout() from TargetSelectionDAGInfo (had no users) 2015-07-09 02:10:08 +00:00
HexagonSelectionDAGInfo.h Remove getDataLayout() from TargetSelectionDAGInfo (had no users) 2015-07-09 02:10:08 +00:00
HexagonSplitConst32AndConst64.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonSubtarget.cpp Remove getDataLayout() from TargetSelectionDAGInfo (had no users) 2015-07-09 02:10:08 +00:00
HexagonSubtarget.h Replace string GNU Triples with llvm::Triple in MCSubtargetInfo and create*MCSubtargetInfo(). NFC. 2015-06-10 12:11:26 +00:00
HexagonTargetMachine.cpp [Hexagon] Generate MUX from conditional transfers when dot-new not possible 2015-07-20 21:23:25 +00:00
HexagonTargetMachine.h Replace string GNU Triples with llvm::Triple in TargetMachine. NFC. 2015-06-11 19:41:26 +00:00
HexagonTargetObjectFile.cpp Move most user of TargetMachine::getDataLayout to the Module one 2015-07-16 06:11:10 +00:00
HexagonTargetObjectFile.h Move alignment from MCSectionData to MCSection. 2015-05-21 19:20:38 +00:00
HexagonTargetStreamer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
HexagonVLIWPacketizer.cpp [Hexagon] Use MF reference from parent class in HexagonPacketizerList 2015-06-23 13:50:23 +00:00
LLVMBuild.txt Add missing dependency to Hexagon target. 2015-07-08 21:13:37 +00:00
Makefile Prune CRLFs. 2015-05-25 01:43:23 +00:00