Commit Graph

8 Commits

Author SHA1 Message Date
Arnold Schwaighofer 8585646360 SwiftCC: Perform physical layout when computing coercion types
We need to take type alignment padding into account whe computing physical
layouts.

The layout must be compatible with the input layout, offsets are defined in
terms of offsets within a packed struct which are computed in terms of the alloc
size of a type.

Usingthe store size we would insert padding for the following type for example:

struct {

  int3 v;
  long long l;
} __attribute((packed))

On x86-64 int3 is padded to int4 alignment. The swiftcc type would be
<{ <3 x float>, [4 x i8], i64 }> which is not compatible with <{ <3 x float>,
i64 }>.

The latter has i64 at offset 16 and the former at offset 20.

rdar://32618125

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@305956 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-21 21:43:40 +00:00
Arnold Schwaighofer 5af66e97a4 swiftcc: Add an api to query whether a target ABI stores swifterror in a register
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@288394 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-01 18:07:38 +00:00
Arnold Schwaighofer 6ea1c6c267 Swift Calling Convention: Fix out of bounds access
Use iterator instead of address of element in vector

It is not valid to access one after the last element.

rdar://28759508

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@284150 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-13 19:19:37 +00:00
Arnold Schwaighofer ceb94e6d11 Pass the end of a component to SwiftAggLowering's enumerateComponents callback
This is usefull for determining whether components overlap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283932 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-11 20:34:03 +00:00
Aaron Ballman a11bf9d2c0 Silencing a 32-bit shift implicit conversion warning from MSVC; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265782 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-08 12:21:58 +00:00
James Y Knight 227e640101 Fix "suggest parentheses" warning.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265355 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-04 22:35:56 +00:00
John McCall 93e221e78e Fix an unused-variable warning by using the variable in the place
it was supposed to have been used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265344 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-04 20:39:50 +00:00
John McCall df563ecc01 IRGen-level lowering for the Swift calling convention.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265324 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-04 18:33:08 +00:00