I’ll add an assert and get rid of the conditional then. Thank you Adrian and 
Joe, for the great feedbacks!

- Daniel

> On Jun 9, 2016, at 10:09 AM, Adrian Prantl <apra...@apple.com> wrote:
> 
>> 
>> On Jun 9, 2016, at 10:05 AM, Joe Groff <jgr...@apple.com> wrote:
>> 
>>> 
>>> On Jun 9, 2016, at 10:01 AM, Adrian Prantl <apra...@apple.com> wrote:
>>> 
>>> On Jun 9, 2016, at 9:55 AM, Joe Groff <jgr...@apple.com> wrote:
>>>> 
>>>> 
>>>>> On Jun 8, 2016, at 7:38 PM, Daniel Duan via swift-dev 
>>>>> <swift-dev@swift.org> wrote:
>>>>> 
>>>>> Hi all,
>>>>> 
>>>>> I'm resuming work on removing the SILGen for the inout shadow copy. Making
>>>>> this change involes quite a bit of tests updates.  I'd love some one to 
>>>>> review
>>>>> this commit in SILGenProlog.cpp before I dive back into the deep end:
>>>>> 
>>>>> https://github.com/dduan/swift/commit/e56d73c065bec7bdde7c0ffee42b808d1bb52d74
>>>>> 
>>>>> (It's +5, -12, a small patch).
>>>>> 
>>>>> Is this on the right track?
>>>> 
>>>> The variable binding looks great. We might need to coordinate with the 
>>>> debugger to ensure we still emit debug info the way lldb expects it; 
>>>> cc'ing Adrian and Enrico.
>>>> 
>>>> -Joe
>>> 
>>> The diff looks generally reasonable to me. You will probably have to update 
>>> a bunch of debug info testcases along with this change.
>>> 
>>> You can run the LLDB test suite with by running
>>> $ build-script -r -l -t -- --skip-test-cmark --skip-test-swift 
>>> --lldb-test-with-curses --lldb-use-system-debugserver
>>> 
>>> Since I missed the original discussion, I’m curious about the context 
>>> though: under what circumstances is an inout argument be passed by value 
>>> and can it ever be a let binding?
>> 
>> An inout can never be a 'let' binding.
> 
> In that case, the we might want to assert that !vd->isLet() in the patch.
> 
>> It's always passed by-reference, but previously, we would inject a shadow 
>> copy with writeback on the callee side to allow captures to reference the 
>> inout without extending the original argument's lifetime. We no longer allow 
>> this, so inouts are always simply passed by reference now.
> 
> And does this imply that it is always an address? If so, we might want to 
> assert this and get rid of the else branch handling the value.
> 
> thanks,
> adrian

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to