Commit Graph

12 Commits

Author SHA1 Message Date
Fangrui Song abdbb605f2 Remove trailing space
sed -Ei 's/[[:space:]]+$//' include/**/*.{def,h,td} lib/**/*.{cpp,h}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338291 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-30 19:24:48 +00:00
John McCall 06e7df12ca Generalize the swiftcall API since being passed indirectly isn't
C++-specific anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@329513 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-07 20:16:47 +00:00
John McCall 4448880e18 Fix a major swiftcall ABI bug with trivial C++ class types.
The problem with the previous logic was that there might not be any
explicit copy/move constructor declarations, e.g. if the type is
trivial and we've never type-checked a copy of it.  Relying on Sema's
computation seems much more reliable.

Also, I believe Richard's recommendation is exactly the rule we use
now on the Itanium ABI, modulo the trivial_abi attribute (which this
change of course fixes our handling of in Swift).

This does mean that we have a less portable rule for deciding
indirectness for swiftcall.  I would prefer it if we just applied the
Itanium rule universally under swiftcall, but in the meantime, I need
to fix this bug.

This only arises when defining functions with class-type arguments
in C++, as we do in the Swift runtime.  It doesn't affect normal Swift
operation because we don't import code as C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328942 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-01 21:04:30 +00:00
John McCall 17ba55db12 Simplify the internal API for checking whether swiftcall passes a type indirectly and expose that API externally.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321957 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-07 06:28:49 +00:00
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