llvm-6502/utils
JF Bastien 9994b911f4 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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242727 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-20 22:51:32 +00:00
..
bugpoint
buildit
count
crosstool
emacs
FileCheck Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types 2015-05-29 19:43:39 +00:00
fpcmp
git
git-svn
jedit
kate
KillTheDoctor
lint
lit [lit] Implement 'env' in the internal shell 2015-07-20 19:42:08 +00:00
llvm-build
llvm-lit
Misc
not
PerfectShuffle
release Avoid early pipefail exits due to grep failures in stage comparisons. 2015-07-20 22:24:40 +00:00
TableGen Targets: commonize some stack realignment code 2015-07-20 22:51:32 +00:00
Target/ARM
testgen
textmate
unittest Make UnitTestMain/TestMain.cpp free from llvm/Config/config.h. 2015-07-06 23:51:40 +00:00
valgrind
vim [vim] Update the syntax to mark REQUIRES lines and not talk about 2015-07-15 01:48:40 +00:00
yaml-bench
bisect
check-each-file
clang-parse-diagnostics-file
codegen-diff
countloc.sh
create_ladder_graph.py
DSAclean.py
DSAextract.py
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl
GetRepositoryPath
GetSourceVersion
getsrcs.sh
lldbDataFormatters.py
llvm-compilers-check
llvm-native-gxx
llvm.grm
llvm.natvis
LLVMBuild.txt
llvmdo
llvmgrep
Makefile
makellvm
shuffle_fuzz.py
sort_includes.py
test_debuginfo.pl
update_llc_test_checks.py
UpdateCMakeLists.pl
wciia.py