llvm-project/llvm/lib
Pablo Barrio 2b4385846c Fix function pointer tail calls in armv8-M.base
Summary:
The compiler fails with the following error message:

fatal error: error in backend: ran out of registers during
register allocation

Tail call optimization for Armv8-M.base fails to meet all the required
constraints when handling calls to function pointers where the
arguments take up r0-r3. This is because the pointer to the
function to be called can only be stored in r0-r3, but these are
all occupied by arguments. This patch makes sure that tail call
optimization does not try to handle this type of calls.

Reviewers: chill, MatzeB, olista01, rengolin, efriedma

Reviewed By: olista01, efriedma

Subscribers: efriedma, aemerson, javed.absar, llvm-commits, kristof.beyls

Differential Revision: https://reviews.llvm.org/D40706

llvm-svn: 319664
2017-12-04 16:55:49 +00:00
..
Analysis Revert "[ValueTracking] Pass only a single lambda to computeKnownBitsFromShiftOperator by using KnownBits struct instead of separate APInts. NFCI" 2017-12-04 12:51:49 +00:00
AsmParser [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
BinaryFormat Simplify. 2017-10-19 01:32:18 +00:00
Bitcode [WebAssembly] Explicily disable comdat support for wasm output 2017-11-14 00:49:16 +00:00
CodeGen [TwoAddressInstructionPass] Bugfix in handling of sunk instructions. 2017-12-04 10:03:14 +00:00
DebugInfo [DebugInfo] Bail out if making no progress dumping line tables. 2017-12-01 18:25:30 +00:00
Demangle [ItaniumDemangle] Fix a exponential string copying bug 2017-05-28 23:24:52 +00:00
ExecutionEngine Fix 'not all control paths return a value' warning on MSVC builds 2017-11-09 14:56:17 +00:00
FuzzMutate [FuzzMutate] Bailout from injecting into empty basic blocks. 2017-11-30 15:41:58 +00:00
Fuzzer [libFuzzer] Delete llvm/lib/Fuzzer 2017-10-16 20:48:19 +00:00
IR [NVPTX] Assign valid global names 2017-12-04 14:19:33 +00:00
IRReader Move the stripping of invalid debug info from the Verifier to AutoUpgrade. 2017-10-02 18:31:29 +00:00
LTO Fix a bunch more layering of CodeGen headers that are in Target 2017-11-17 01:07:10 +00:00
LineEditor
Linker Linker: Create a function declaration when moving a non-prevailing alias of function type. 2017-08-10 01:07:44 +00:00
MC Reland "[WebAssembly] Add visibility flag to Wasm symbol flags"" 2017-12-03 01:19:23 +00:00
Object Reland "[WebAssembly] Add visibility flag to Wasm symbol flags"" 2017-12-03 01:19:23 +00:00
ObjectYAML Split TypeTableBuilder into two classes. 2017-11-30 18:39:50 +00:00
Option Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
Passes Add a new pass to speculate around PHI nodes with constant (integer) operands when profitable. 2017-11-28 11:32:31 +00:00
ProfileData Mark all library options as hidden. 2017-12-01 00:53:10 +00:00
Support Revert "[cmake] Enable zlib support on windows" 2017-12-04 16:46:20 +00:00
TableGen [globalisel][regbank] Warn about MIR ambiguities when register bank/class names clash. 2017-11-01 22:13:05 +00:00
Target Fix function pointer tail calls in armv8-M.base 2017-12-04 16:55:49 +00:00
Testing Force #define GTEST_LANG_CXX11. 2017-10-27 21:12:28 +00:00
ToolDrivers [COFF] Improve the check for functions that should get an extra underscore 2017-10-23 09:08:13 +00:00
Transforms [Loop Predication] Teach LP about reverse loops 2017-12-04 15:11:48 +00:00
WindowsManifest Fix bug 34608 by moving private header out of public header. 2017-09-14 23:01:13 +00:00
XRay [XRay] Use optimistic logging model for FDR mode 2017-11-21 07:16:57 +00:00
CMakeLists.txt Moving libFuzzer from LLVM to compiler-rt. 2017-08-21 23:25:12 +00:00
LLVMBuild.txt Re-apply "Introduce FuzzMutate library" 2017-08-21 22:57:06 +00:00