diff options
author | Manman Ren <manman.ren@gmail.com> | 2016-03-29 17:37:21 +0000 |
---|---|---|
committer | Manman Ren <manman.ren@gmail.com> | 2016-03-29 17:37:21 +0000 |
commit | f46262e0b7a183c22b9384cd729c5fb0f05e5d38 (patch) | |
tree | a4c3cb4390adf67c3341875e7734d38230204150 /llvm/lib/Target/X86 | |
parent | 6e5c1fed08edf57725b9dc2e5c7ab429d25569a6 (diff) | |
download | bcm5719-llvm-f46262e0b7a183c22b9384cd729c5fb0f05e5d38.tar.gz bcm5719-llvm-f46262e0b7a183c22b9384cd729c5fb0f05e5d38.zip |
Swift Calling Convention: add swiftself attribute.
Differential Revision: http://reviews.llvm.org/D17866
llvm-svn: 264754
Diffstat (limited to 'llvm/lib/Target/X86')
-rw-r--r-- | llvm/lib/Target/X86/X86CallingConv.td | 3 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86FastISel.cpp | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86CallingConv.td b/llvm/lib/Target/X86/X86CallingConv.td index 471a1828306..f02a96665d4 100644 --- a/llvm/lib/Target/X86/X86CallingConv.td +++ b/llvm/lib/Target/X86/X86CallingConv.td @@ -273,6 +273,9 @@ def CC_X86_64_C : CallingConv<[ CCIfNest<CCIfSubtarget<"isTarget64BitILP32()", CCAssignToReg<[R10D]>>>, CCIfNest<CCAssignToReg<[R10]>>, + // A SwiftSelf is passed in R10. + CCIfSwiftSelf<CCIfType<[i64], CCAssignToReg<[R10]>>>, + // The first 6 integer arguments are passed in integer registers. CCIfType<[i32], CCAssignToReg<[EDI, ESI, EDX, ECX, R8D, R9D]>>, CCIfType<[i64], CCAssignToReg<[RDI, RSI, RDX, RCX, R8 , R9 ]>>, diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp index e9904e2bf38..40e1c2feab5 100644 --- a/llvm/lib/Target/X86/X86FastISel.cpp +++ b/llvm/lib/Target/X86/X86FastISel.cpp @@ -2744,6 +2744,7 @@ bool X86FastISel::fastLowerArguments() { if (F->getAttributes().hasAttribute(Idx, Attribute::ByVal) || F->getAttributes().hasAttribute(Idx, Attribute::InReg) || F->getAttributes().hasAttribute(Idx, Attribute::StructRet) || + F->getAttributes().hasAttribute(Idx, Attribute::SwiftSelf) || F->getAttributes().hasAttribute(Idx, Attribute::Nest)) return false; |