llvm-6502/test
Stepan Dyatkovskiy b52ba9f8a8 Issue:
Stack is formed improperly for long structures passed as byval arguments for
EABI mode.

If we took AAPCS reference, we can found the next statements:

A: "If the argument requires double-word alignment (8-byte), the NCRN (Next
Core Register Number) is rounded up to the next even register number." (5.5
Parameter Passing, Stage C, C.3).

B: "The alignment of an aggregate shall be the alignment of its most-aligned
component." (4.3 Composite Types, 4.3.1 Aggregates).

So if we have structure with doubles (9 double fields) and 3 Core unused
registers (r1, r2, r3): caller should use r2 and r3 registers only.
Currently r1,r2,r3 set is used, but it is invalid.

Callee VA routine should also use r2 and r3 regs only. All is ok here. This
behaviour is guessed by rounding up SP address with ADD+BFC operations.

Fix:
Main fix is in ARMTargetLowering::HandleByVal. If we detected AAPCS mode and
8 byte alignment, we waste odd registers then.

P.S.:
I also improved LDRB_POST_IMM regression test. Since ldrb instruction will
not generated by current regression test after this patch. 


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166018 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-16 07:16:47 +00:00
..
Analysis dependence analysis 2012-10-11 07:32:34 +00:00
Archive
Assembler Don't crash if a .ll file contains a forward-reference that looks like a global 2012-10-11 00:38:25 +00:00
Bindings/Ocaml Move TargetData to DataLayout. 2012-10-08 16:39:34 +00:00
Bitcode Change encoding of instruction operands in bitcode binaries to be relative 2012-10-11 20:20:40 +00:00
BugPoint
CodeGen Issue: 2012-10-16 07:16:47 +00:00
DebugInfo Make sure to generate the right kind of MDNode for enum forward declarations. 2012-10-05 01:49:14 +00:00
ExecutionEngine Some regression tests which are testing the old jit and are exercising functionality which is both known to be broken and not expected to be fixed in the old jit. To remove these from the regression test output, I've marked them XFAIL (for lit tests) and ifdef'd them out (unit tests). These modifications remove the last long-standing regression test failures from the buildbots (though updating the triple to reflect new ubuntu configuration has temporarily caused some new failures). Tested on x86-64 and ARM Linux. 2012-10-08 13:06:30 +00:00
Feature
Instrumentation [asan] fix a test 2012-10-15 14:30:30 +00:00
Integer
Linker
MC X86: Depending on the local semantics of .align this test can also emit a nopl instead of nopw. 2012-10-13 17:38:00 +00:00
Object
Other Enable response files in all tools. Patch by Liu, Yaxun (Sam). I have simplified 2012-10-09 19:52:10 +00:00
Scripts
TableGen
Transforms Update the memcpy rewriting to fully support widened int rewriting. This 2012-10-15 10:24:43 +00:00
Unit
Verifier
YAMLParser
CMakeLists.txt Add dependency on llvm-bcanalyzer from tests to the CMake build. 2012-10-15 21:11:46 +00:00
lit.cfg Enable llvm/test/ExecutionEngine/MCJIT also for cygwin. 2012-10-05 14:10:29 +00:00
lit.site.cfg.in
Makefile Revert r117093, "test/Makefile: Force lit -j1 on Cygwin." 2012-10-09 05:07:18 +00:00
Makefile.tests
TestRunner.sh