summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/SwiftCallingConv.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove trailing spaceFangrui Song2018-07-301-2/+2
| | | | | | sed -Ei 's/[[:space:]]+$//' include/**/*.{def,h,td} lib/**/*.{cpp,h} llvm-svn: 338291
* Generalize the swiftcall API since being passed indirectly isn'tJohn McCall2018-04-071-6/+4
| | | | | | C++-specific anymore. llvm-svn: 329513
* Fix a major swiftcall ABI bug with trivial C++ class types.John McCall2018-04-011-16/+4
| | | | | | | | | | | | | | | | | | | | | | 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++. llvm-svn: 328942
* Simplify the internal API for checking whether swiftcall passes a type ↵John McCall2018-01-071-5/+9
| | | | | | indirectly and expose that API externally. llvm-svn: 321957
* SwiftCC: Perform physical layout when computing coercion typesArnold Schwaighofer2017-06-211-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 305956
* swiftcc: Add an api to query whether a target ABI stores swifterror in a ↵Arnold Schwaighofer2016-12-011-0/+5
| | | | | | register llvm-svn: 288394
* Swift Calling Convention: Fix out of bounds accessArnold Schwaighofer2016-10-131-1/+1
| | | | | | | | | | Use iterator instead of address of element in vector It is not valid to access one after the last element. rdar://28759508 llvm-svn: 284150
* Pass the end of a component to SwiftAggLowering's enumerateComponents callbackArnold Schwaighofer2016-10-111-1/+1
| | | | | | This is usefull for determining whether components overlap. llvm-svn: 283932
* Silencing a 32-bit shift implicit conversion warning from MSVC; NFC.Aaron Ballman2016-04-081-1/+1
| | | | llvm-svn: 265782
* Fix "suggest parentheses" warning.James Y Knight2016-04-041-3/+3
| | | | llvm-svn: 265355
* Fix an unused-variable warning by using the variable in the placeJohn McCall2016-04-041-1/+1
| | | | | | it was supposed to have been used. llvm-svn: 265344
* IRGen-level lowering for the Swift calling convention.John McCall2016-04-041-0/+830
llvm-svn: 265324
OpenPOWER on IntegriCloud