]> granicus.if.org Git - clang/commit
Build correct coercion types in SparcV9ABIInfo.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 28 May 2013 04:57:37 +0000 (04:57 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 28 May 2013 04:57:37 +0000 (04:57 +0000)
commitfc782fbeb25ad880ec667f34997bd45d530aef86
treef2058d57333757cf4d2a82b3bd2bc200adfa4319
parente8328540cffa6b5b5f7d07e2e7d2f3503500a383
Build correct coercion types in SparcV9ABIInfo.

The coercion type serves two purposes:

 1. Pad structs to a multiple of 64 bits, so they are passed
    'left-aligned' in registers.

 2. Expose aligned floating point elements as first-level elements, so
    the code generator knows to pass them in floating point registers.

We also compute the InReg flag which indicates that the struct contains
aligned 32-bit floats. This flag is used by the code generator to pick
the right registers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182753 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/TargetInfo.cpp
test/CodeGen/sparcv9-abi.c