llvm-project/llvm/test/CodeGen/SPARC
James Y Knight 2e64b8b79e [Sparc] Don't overlap variable-sized allocas with other stack variables.
On SparcV8, it was previously the case that a variable-sized alloca
might overlap by 4-bytes the last fixed stack variable, effectively
because 92 (the number of bytes reserved for the register spill area) !=
96 (the offset added to SP for where to start a DYNAMIC_STACKALLOC).

It's not as simple as changing 96 to 92, because variables that should
be 8-byte aligned would then be misaligned.

For now, simply increase the allocation size by 8 bytes for each dynamic
allocation -- wastes space, but at least doesn't overlap. As the large
comment says, doing this more efficiently will require larger changes in
llvm.

Also adds some test cases showing that we continue to not support
dynamic stack allocation and over-alignment in the same function.

llvm-svn: 285131
2016-10-25 22:13:28 +00:00
..
32abi.ll VirtRegMap: Replace some identity copies with KILL instructions. 2016-07-09 00:19:07 +00:00
64abi.ll [Sparc] Add Soft Float support 2016-05-18 09:14:13 +00:00
64bit.ll
64cond.ll
64spill.ll
2006-01-22-BitConvertLegalize.ll
2007-05-09-JumpTables.ll
2007-07-05-LiveIntervalAssert.ll
2008-10-10-InlineAsmMemoryOperand.ll
2008-10-10-InlineAsmRegOperand.ll
2009-08-28-PIC.ll
2009-08-28-WeakLinkage.ll
2011-01-11-CC.ll Fix tests that used CHECK-NEXT-NOT and CHECK-DAG-NOT. 2016-02-26 19:40:34 +00:00
2011-01-11-Call.ll
2011-01-11-FrameAddr.ll
2011-01-19-DelaySlot.ll [SPARC] Revamp AnalyzeBranch and add ReverseBranchCondition. 2016-01-13 04:44:14 +00:00
2011-01-21-ByValArgs.ll
2011-01-22-SRet.ll [SPARC] Switch to the Machine Scheduler. 2015-09-10 21:49:06 +00:00
2011-12-03-TailDuplication.ll
2012-05-01-LowerArguments.ll
2013-05-17-CallFrame.ll [Sparc] Don't overlap variable-sized allocas with other stack variables. 2016-10-25 22:13:28 +00:00
DbgValueOtherTargets.test
LeonCASAInstructionUT.ll [Myriad]: set LeonCASA processor feature 2016-09-13 17:51:41 +00:00
LeonDetectRoundChangePassUT.ll Sparc: fix test. 2016-10-19 15:55:11 +00:00
LeonInsertNOPLoadPassUT.ll [Sparc][LEON] Removed the parts of the errata fixes implemented using inline assembly as this is not the desired behaviour for end-users. Small change to a unit test to implement this without requiring the inline assembly. 2016-09-09 14:16:51 +00:00
LeonItinerariesUT.ll [Sparc][LEON] Itineraries unit test. 2016-05-10 09:09:20 +00:00
LeonReplaceFMULSPassUT.ll [Sparc][LEON] Removed the parts of the errata fixes implemented using inline assembly as this is not the desired behaviour for end-users. Small change to a unit test to implement this without requiring the inline assembly. 2016-09-09 14:16:51 +00:00
LeonReplaceSDIVPassUT.ll This pass, fixing an erratum in some LEON 2 processors ensures that the SDIV instruction is not issued, but replaced by SDIVcc instead, which does not exhibit the error. Unit test included. 2016-10-10 08:53:06 +00:00
LeonSMACUMACInstructionUT.ll [SPARC] Fixes for hardware errata on LEON processor. 2016-06-19 11:03:28 +00:00
analyze-branch.ll [SPARC] Revamp AnalyzeBranch and add ReverseBranchCondition. 2016-01-13 04:44:14 +00:00
atomics.ll Support expanding partial-word cmpxchg to full-word cmpxchg in AtomicExpandPass. 2016-06-17 18:11:48 +00:00
basictest.ll [Sparc] Implement UMUL_LOHI and SMUL_LOHI instead of MULHS/MULHU/MUL. 2016-10-05 20:54:17 +00:00
blockaddr.ll
constpool.ll
ctpop.ll
empty-functions.ll
exception.ll
fail-alloca-align.ll [Sparc] Don't overlap variable-sized allocas with other stack variables. 2016-10-25 22:13:28 +00:00
float-constants.ll Fix assert when emitting llvm.pow.f86. 2015-10-09 21:36:19 +00:00
float.ll [Sparc] Fix double-float fabs and fneg on little endian CPUs. 2016-04-25 22:54:09 +00:00
fp128.ll [Sparc] Fix double-float fabs and fneg on little endian CPUs. 2016-04-25 22:54:09 +00:00
func-addr.ll [Sparc] Allow taking of function address into a register. 2016-05-04 12:11:05 +00:00
globals.ll
inlineasm.ll [Sparc] Enable more inline assembly constraints. 2016-05-20 09:03:01 +00:00
leafproc.ll
lit.local.cfg
mature-mc-support.ll
missing-sret.ll Drop assert that a call with struct return goes to a function with sret 2015-10-21 20:05:01 +00:00
missinglabel.ll Codegen: Fix broken assumption in Tail Merge. 2016-06-24 18:16:36 +00:00
mult-alt-generic-sparc.ll
multiple-div.ll
obj-relocs.ll
parts.ll
private.ll
rem.ll
reserved-regs.ll
select-mask.ll
setjmp.ll
sjlj.ll [Sparc] Implement __builtin_setjmp, __builtin_longjmp back-end. 2016-05-04 09:33:30 +00:00
soft-float.ll [Sparc] Add Soft Float support 2016-05-18 09:14:13 +00:00
spill.ll
spillsize.ll
sret-secondary.ll
stack-align.ll [Sparc] Don't overlap variable-sized allocas with other stack variables. 2016-10-25 22:13:28 +00:00
stack-protector.ll [SPARC] [SSP] Add support for LOAD_STACK_GUARD. 2016-04-26 10:37:14 +00:00
thread-pointer.ll [SPARC] Add support for llvm.thread.pointer. 2016-04-26 10:37:01 +00:00
tls.ll [SPARC] Switch to the Machine Scheduler. 2015-09-10 21:49:06 +00:00
trap.ll
varargs.ll [SPARC] Switch to the Machine Scheduler. 2015-09-10 21:49:06 +00:00
vector-call.ll Fix Sparc 32bit Lowering to rebundle up v2i32 values. 2016-02-26 18:55:22 +00:00
vector-extract-elt.ll [DAG] Teach computeKnownBits and ComputeNumSignBits in SelectionDAG to look through EXTRACT_VECTOR_ELT. 2016-10-05 17:40:27 +00:00
zerostructcall.ll [Sparc] Allow passing of empty structs. 2016-06-01 08:48:56 +00:00