ARM: HFAs must be passed in consecutive registers
authorOliver Stannard <oliver.stannard@arm.com>
Fri, 9 May 2014 14:01:47 +0000 (14:01 +0000)
committerOliver Stannard <oliver.stannard@arm.com>
Fri, 9 May 2014 14:01:47 +0000 (14:01 +0000)
commite2948385b92b5aec6ac5187ca4fee367db2f0dd1
tree8a8ce832cbbde87255db369fe716cf4c6938acdd
parentba148a1b8f04f20fc8e70a50585ffffadac3368d
ARM: HFAs must be passed in consecutive registers

When using the ARM AAPCS, HFAs (Homogeneous Floating-point Aggregates) must
be passed in a block of consecutive floating-point registers, or on the stack.
This means that unused floating-point registers cannot be back-filled with
part of an HFA, however this can currently happen. This patch, along with the
corresponding clang patch (http://reviews.llvm.org/D3083) prevents this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208413 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/CallingConvLower.h
include/llvm/Target/TargetCallingConv.h
include/llvm/Target/TargetCallingConv.td
include/llvm/Target/TargetLowering.h
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/Target/ARM/ARMCallingConv.h
lib/Target/ARM/ARMCallingConv.td
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMISelLowering.h
test/CodeGen/ARM/aapcs-hfa.ll [new file with mode: 0644]
test/CodeGen/ARM/hfa-in-contiguous-registers.ll [new file with mode: 0644]