Re: [swift-dev] [Swift CI] Build Failure: 0. OSS - Swift Incremental RA - OS X (master) #7467

2016-12-06 Thread Xi Ge via swift-dev
It seems to be one. I’ve disabled the test for now to unblock CI.


> On Dec 6, 2016, at 7:44 PM, Slava Pestov  wrote:
> 
> Maybe it’s a flaky test? We’ve had a few of those lately. Mark is working on 
> a systemic fix for the issue they keep exposing.
> 
>> On Dec 6, 2016, at 12:56 PM, Xi Ge via swift-dev > > wrote:
>> 
>> The newly added crash is fixed. I’ll update the validation test suite.
>> 
>> 
>>> On Dec 6, 2016, at 12:54 PM, no-re...@swift.org  
>>> wrote:
>>> 
>>> [FAILURE] oss-swift-incremental-RA-osx [#7467]
>>> 
>>> Build URL:  https://ci.swift.org/job/oss-swift-incremental-RA-osx/7467/ 
>>> 
>>> Project:oss-swift-incremental-RA-osx
>>> Date of build:  Tue, 06 Dec 2016 12:27:32 -0800
>>> Build duration: 27 min
>>> Identified problems:
>>> 
>>> Compile Error: This build failed because of a compile error. Below is a 
>>> list of all errors in the build log:
>>> Indication 1 
>>> 
>>> Regression test failed: This build failed because a regression test in the 
>>> test suite FAILed. Below is a list of all errors:
>>> Indication 1 
>>> 
>>> Tests:
>>> 
>>> Name: Swift(macosx-x86_64)
>>> Failed: 1 test(s), Passed: 8620 test(s), Total: 8621 test(s)
>>> Failed: 
>>> Swift(macosx-x86_64).compiler_crashers.28562-swift-typebase-getcanonicaltype.swift
>>>  
>>> 
>>> Name: Swift-Unit
>>> Failed: 0 test(s), Passed: 356 test(s), Total: 356 test(s)
>>> 
>>> Changes
>>> 
>>> Commit e6bb9c126c67f653baa79880fc68815bbec22981 by mbraun:
>>> Handle empty functions with debug info in load/store opt pass
>>> 
>>> add: test/CodeGen/ARM/2016-08-24-ARM-LDST-dbginfo-bug.ll
>>> edit: lib/Target/ARM/ARMLoadStoreOptimizer.cpp
>>> 
>>> Commit 154c5edd99e5a8a50a74d356964680daaa844fa6 by mbraun:
>>> Revert "AArch64CollectLOH: Rewrite as block-local analysis."
>>> 
>>> delete: test/CodeGen/AArch64/loh.mir
>>> edit: test/CodeGen/AArch64/arm64-collect-loh-garbage-crash.ll
>>> edit: test/CodeGen/AArch64/arm64-collect-loh-str.ll
>>> edit: lib/Target/AArch64/AArch64CollectLOH.cpp
>>> edit: test/CodeGen/AArch64/arm64-collect-loh.ll
>>> 
>>> Commit 528f38aadbe6a0ed66768113f78780dece1b3b21 by nhawes:
>>> [code-completion] Fix crash in printParameterList when paramListTy is
>>> 
>>> add: validation-test/IDE/crashers_fixed/101-swift-decl-print.swift
>>> delete: validation-test/IDE/crashers/101-swift-decl-print.swift
>>> edit: lib/AST/ASTPrinter.cpp
>>> 
>>> Commit d039da1226236d940e5220b7e6020b272605eaa9 by nhawes:
>>> Remove redundant .getPointer() in printParameterList
>>> 
>>> edit: lib/AST/ASTPrinter.cpp
>>> 
>>> Commit c01bff7ddb2152d1e60544b950f66e999ec112da by blangmuir:
>>> [code-completion] Allow ErrorType in solution to avoid assertion failure
>>> 
>>> add: 
>>> validation-test/IDE/crashers_fixed/108-swift-typechecker-typecheckcompletionsequence.swift
>>> delete: 
>>> validation-test/IDE/crashers/108-swift-typechecker-typecheckcompletionsequence.swift
>>> edit: lib/Sema/TypeCheckConstraints.cpp
>>> 
>>> Commit 8a4183199ccdfaf2289f482ee7233c952bfd576b by practicalswift:
>>> [swiftc (117 vs. 5256)] Add crasher in
>>> 
>>> add: 
>>> validation-test/compiler_crashers/28562-swift-typebase-getcanonicaltype.swift
>>> 
>>> Commit cfdaf9f14adcd201e243622ed15d382692d27efe by practicalswift:
>>> [gardening] Fix invalid Swift URLs.
>>> 
>>> edit: include/swift/Basic/ValueWitnessMangling.def
>>> edit: include/swift/SILOptimizer/Utils/SpecializationMangler.h
>>> edit: include/swift/Basic/Demangler.h
>>> edit: stdlib/public/SwiftShims/DispatchOverlayShims.h
>>> edit: include/swift/AST/ASTMangler.h
>>> edit: include/swift/Basic/ManglingUtils.h
>>> edit: lib/IRGen/IRGenMangler.cpp
>>> edit: lib/AST/ASTMangler.cpp
>>> edit: lib/SILOptimizer/Utils/SpecializationMangler.cpp
>>> edit: include/swift/Basic/ManglingMacros.h
>>> edit: include/swift/Basic/Mangler.h
>>> edit: lib/Basic/Demangler.cpp
>>> edit: lib/Basic/Mangler.cpp
>>> edit: lib/Basic/ManglingUtils.cpp
>>> edit: lib/IRGen/IRGenMangler.h
>>> 
>>> Commit d0021713d2cc16876b5622f474109e2fc6304640 by practicalswift:
>>> [gardening] Remove duplicate file.
>>> 
>>> delete: 
>>> validation-test/compiler_crashers_fixed/28466-segfault-0xc27624-0xc2741f-0xc25bb5-0xbcdbbb.swift~13e17147798fd3fdc17a53aabf4fe6450eb7c91e
>> 
>> ___
>> swift-dev mailing list
>> swift-dev@swift.org 
>> https://lists.swift.org/mailman/listinfo/swift-dev
> 

___
swift-dev mailing list
swift-d

Re: [swift-dev] [Swift CI] Build Failure: 0. OSS - Swift Incremental RA - OS X (master) #7467

2016-12-06 Thread Slava Pestov via swift-dev
Maybe it’s a flaky test? We’ve had a few of those lately. Mark is working on a 
systemic fix for the issue they keep exposing.

> On Dec 6, 2016, at 12:56 PM, Xi Ge via swift-dev  wrote:
> 
> The newly added crash is fixed. I’ll update the validation test suite.
> 
> 
>> On Dec 6, 2016, at 12:54 PM, no-re...@swift.org  
>> wrote:
>> 
>> [FAILURE] oss-swift-incremental-RA-osx [#7467]
>> 
>> Build URL:   https://ci.swift.org/job/oss-swift-incremental-RA-osx/7467/ 
>> 
>> Project: oss-swift-incremental-RA-osx
>> Date of build:   Tue, 06 Dec 2016 12:27:32 -0800
>> Build duration:  27 min
>> Identified problems:
>> 
>> Compile Error: This build failed because of a compile error. Below is a list 
>> of all errors in the build log:
>> Indication 1 
>> 
>> Regression test failed: This build failed because a regression test in the 
>> test suite FAILed. Below is a list of all errors:
>> Indication 1 
>> 
>> Tests:
>> 
>> Name: Swift(macosx-x86_64)
>> Failed: 1 test(s), Passed: 8620 test(s), Total: 8621 test(s)
>> Failed: 
>> Swift(macosx-x86_64).compiler_crashers.28562-swift-typebase-getcanonicaltype.swift
>>  
>> 
>> Name: Swift-Unit
>> Failed: 0 test(s), Passed: 356 test(s), Total: 356 test(s)
>> 
>> Changes
>> 
>> Commit e6bb9c126c67f653baa79880fc68815bbec22981 by mbraun:
>> Handle empty functions with debug info in load/store opt pass
>> 
>> add: test/CodeGen/ARM/2016-08-24-ARM-LDST-dbginfo-bug.ll
>> edit: lib/Target/ARM/ARMLoadStoreOptimizer.cpp
>> 
>> Commit 154c5edd99e5a8a50a74d356964680daaa844fa6 by mbraun:
>> Revert "AArch64CollectLOH: Rewrite as block-local analysis."
>> 
>> delete: test/CodeGen/AArch64/loh.mir
>> edit: test/CodeGen/AArch64/arm64-collect-loh-garbage-crash.ll
>> edit: test/CodeGen/AArch64/arm64-collect-loh-str.ll
>> edit: lib/Target/AArch64/AArch64CollectLOH.cpp
>> edit: test/CodeGen/AArch64/arm64-collect-loh.ll
>> 
>> Commit 528f38aadbe6a0ed66768113f78780dece1b3b21 by nhawes:
>> [code-completion] Fix crash in printParameterList when paramListTy is
>> 
>> add: validation-test/IDE/crashers_fixed/101-swift-decl-print.swift
>> delete: validation-test/IDE/crashers/101-swift-decl-print.swift
>> edit: lib/AST/ASTPrinter.cpp
>> 
>> Commit d039da1226236d940e5220b7e6020b272605eaa9 by nhawes:
>> Remove redundant .getPointer() in printParameterList
>> 
>> edit: lib/AST/ASTPrinter.cpp
>> 
>> Commit c01bff7ddb2152d1e60544b950f66e999ec112da by blangmuir:
>> [code-completion] Allow ErrorType in solution to avoid assertion failure
>> 
>> add: 
>> validation-test/IDE/crashers_fixed/108-swift-typechecker-typecheckcompletionsequence.swift
>> delete: 
>> validation-test/IDE/crashers/108-swift-typechecker-typecheckcompletionsequence.swift
>> edit: lib/Sema/TypeCheckConstraints.cpp
>> 
>> Commit 8a4183199ccdfaf2289f482ee7233c952bfd576b by practicalswift:
>> [swiftc (117 vs. 5256)] Add crasher in
>> 
>> add: 
>> validation-test/compiler_crashers/28562-swift-typebase-getcanonicaltype.swift
>> 
>> Commit cfdaf9f14adcd201e243622ed15d382692d27efe by practicalswift:
>> [gardening] Fix invalid Swift URLs.
>> 
>> edit: include/swift/Basic/ValueWitnessMangling.def
>> edit: include/swift/SILOptimizer/Utils/SpecializationMangler.h
>> edit: include/swift/Basic/Demangler.h
>> edit: stdlib/public/SwiftShims/DispatchOverlayShims.h
>> edit: include/swift/AST/ASTMangler.h
>> edit: include/swift/Basic/ManglingUtils.h
>> edit: lib/IRGen/IRGenMangler.cpp
>> edit: lib/AST/ASTMangler.cpp
>> edit: lib/SILOptimizer/Utils/SpecializationMangler.cpp
>> edit: include/swift/Basic/ManglingMacros.h
>> edit: include/swift/Basic/Mangler.h
>> edit: lib/Basic/Demangler.cpp
>> edit: lib/Basic/Mangler.cpp
>> edit: lib/Basic/ManglingUtils.cpp
>> edit: lib/IRGen/IRGenMangler.h
>> 
>> Commit d0021713d2cc16876b5622f474109e2fc6304640 by practicalswift:
>> [gardening] Remove duplicate file.
>> 
>> delete: 
>> validation-test/compiler_crashers_fixed/28466-segfault-0xc27624-0xc2741f-0xc25bb5-0xbcdbbb.swift~13e17147798fd3fdc17a53aabf4fe6450eb7c91e
> 
> ___
> swift-dev mailing list
> swift-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev

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


Re: [swift-dev] Proposal: SILValue SSA Instructions

2016-12-06 Thread John McCall via swift-dev
> On Dec 6, 2016, at 11:35 AM, Joe Groff  wrote:
>> On Dec 6, 2016, at 11:29 AM, John McCall > > wrote:
>> 
>>> On Dec 6, 2016, at 10:17 AM, Joe Groff via swift-dev >> > wrote:
 On Dec 5, 2016, at 4:24 PM, Michael Gottesman via swift-dev 
 mailto:swift-dev@swift.org>> wrote:
 
 Hello everyone!
 
 This is a proposal for 2 instructions needed to express borrowing via SSA 
 at the SIL level. The need for these were discovered while I was 
 prototyping a SIL ownership verifier.
 
 A html version of the proposal:
 
 https://gottesmm.github.io/proposals/sil-ownership-value-ssa-operations.html
  
 
 
 And inline:
 
 
 
 # Summary
 
 This document proposes the addition of the following new SIL instructions:
 
 1. `store_borrow`
 2. `begin_borrow`
 
 These enable the expression of the following operations in Semantic SIL:
 
 1. Passing an `@guaranteed` value to an `@in_guaranteed` argument without
 performing a copy. (`store_borrow`)
 2. Copying a field from an `@owned` aggregate without consuming or copying 
 the entire
 aggregate. (`begin_borrow`)
 3. Passing an `@owned` value as an `@guaranteed` argument parameter.
 
 # Definitions
 
 ## store_borrow
 
 Define `store_borrow` as:
 
  store_borrow %x to %y : $*T
  ...
  end_borrow %y from %x : $*T, $T
 
=>
 
  store %x to %y
 
 `store_borrow` is needed to convert `@guaranteed` values to 
 `@in_guaranteed`
 arguments. Without a `store_borrow`, this can only be expressed via an
 inefficient `copy_value` + `store` + `load` + `destroy_value` sequence:
 
  sil @g : $@convention(thin) (@in_guaranteed Foo) -> ()
 
  sil @f : $@convention(thin) (@guaranteed Foo) -> () {
  bb0(%0 : $Foo):
%1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
%2 = alloc_stack $Foo
%3 = copy_value %0 : $Foo
store %3 to [init] %2 : $Foo
apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
%4 = load [take] %2 : $*Foo
destroy_value %4 : $Foo
dealloc_stack %2 : $Foo
...
  }
 
 `store_borrow` allows us to express this in a more efficient and 
 expressive SIL:
 
  sil @f : $@convention(thin) (@guaranteed Foo) -> () {
  bb0(%0 : $Foo):
%1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
%2 = alloc_stack $Foo
store_borrow %0 to %2 : $*T
apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
end_borrow %2 from %0 : $*T, $T
dealloc_stack %2 : $Foo
...
  }
 
 **NOTE** Once `@in_guaranteed` arguments become passed as values, 
 `store_borrow`
 will no longer be necessary.
 
 ## begin_borrow
 
 Define a `begin_borrow` instruction as:
 
  %borrowed_x = begin_borrow %x : $T
  %borrow_x_field = struct_extract %borrowed_x : $T, #T.field
  apply %f(%borrowed_x) : $@convention(thin) (@guaranteed T) -> ()
  end_borrow %borrowed_x from %x : $T, $T
 
=>
 
  %x_field = struct_extract %x : $T, #T.field
  apply %f(%x_field) : $@convention(thin) (@guaranteed T) -> ()
 
 A `begin_borrow` instruction explicitly converts an `@owned` value to a
 `@guaranteed` value. The result of the `begin_borrow` is paired with an
 `end_borrow` instruction that explicitly represents the end scope of the
 `begin_borrow`.
 
 `begin_borrow` also allows for the explicit borrowing of an `@owned` value 
 for
 the purpose of passing the value off to an `@guaranteed` parameter.
 
 *NOTE* Alternatively, we could make it so that *_extract operations started
 borrow scopes, but this would make SIL less explicit from an ownership
 perspective since one wouldn't be able to visually identify the first
 `struct_extract` in a chain of `struct_extract`. In the case of 
 `begin_borrow`,
 there is no question and it is completely explicit.
>>> 
>>> begin_borrow SGTM. Does end_borrow need to be explicit, or could we leave 
>>> it implicit and rely on dataflow diagnostics to ensure the borrowed value's 
>>> lifetime is dominated by the owner's? It seems to me like, even if 
>>> end_borrow is explicit, we'd want a lifetime-shortening pass to shrinkwrap 
>>> end_borrows to the precise lifetime of the borrowed value's uses.
>> 
>> I definitely think it should be explicit, as Michael has it.
> 
> Would you be able to elaborate why? I suppose explicit is a more conservative 
> starting point. It feels to me like making it explicit isn't doing much more 
> than imposing more verification and optimization burden on us, but I'm 
> probably missing something.


Re: [swift-dev] [Swift CI] Build Failure: 0. OSS - Swift Incremental RA - OS X (master) #7467

2016-12-06 Thread Xi Ge via swift-dev
The newly added crash is fixed. I’ll update the validation test suite.


> On Dec 6, 2016, at 12:54 PM, no-re...@swift.org wrote:
> 
> [FAILURE] oss-swift-incremental-RA-osx [#7467]
> 
> Build URL:https://ci.swift.org/job/oss-swift-incremental-RA-osx/7467/ 
> 
> Project:  oss-swift-incremental-RA-osx
> Date of build:Tue, 06 Dec 2016 12:27:32 -0800
> Build duration:   27 min
> Identified problems:
> 
> Compile Error: This build failed because of a compile error. Below is a list 
> of all errors in the build log:
> Indication 1 
> 
> Regression test failed: This build failed because a regression test in the 
> test suite FAILed. Below is a list of all errors:
> Indication 1 
> 
> Tests:
> 
> Name: Swift(macosx-x86_64)
> Failed: 1 test(s), Passed: 8620 test(s), Total: 8621 test(s)
> Failed: 
> Swift(macosx-x86_64).compiler_crashers.28562-swift-typebase-getcanonicaltype.swift
>  
> 
> Name: Swift-Unit
> Failed: 0 test(s), Passed: 356 test(s), Total: 356 test(s)
> 
> Changes
> 
> Commit e6bb9c126c67f653baa79880fc68815bbec22981 by mbraun:
> Handle empty functions with debug info in load/store opt pass
> 
> add: test/CodeGen/ARM/2016-08-24-ARM-LDST-dbginfo-bug.ll
> edit: lib/Target/ARM/ARMLoadStoreOptimizer.cpp
> 
> Commit 154c5edd99e5a8a50a74d356964680daaa844fa6 by mbraun:
> Revert "AArch64CollectLOH: Rewrite as block-local analysis."
> 
> delete: test/CodeGen/AArch64/loh.mir
> edit: test/CodeGen/AArch64/arm64-collect-loh-garbage-crash.ll
> edit: test/CodeGen/AArch64/arm64-collect-loh-str.ll
> edit: lib/Target/AArch64/AArch64CollectLOH.cpp
> edit: test/CodeGen/AArch64/arm64-collect-loh.ll
> 
> Commit 528f38aadbe6a0ed66768113f78780dece1b3b21 by nhawes:
> [code-completion] Fix crash in printParameterList when paramListTy is
> 
> add: validation-test/IDE/crashers_fixed/101-swift-decl-print.swift
> delete: validation-test/IDE/crashers/101-swift-decl-print.swift
> edit: lib/AST/ASTPrinter.cpp
> 
> Commit d039da1226236d940e5220b7e6020b272605eaa9 by nhawes:
> Remove redundant .getPointer() in printParameterList
> 
> edit: lib/AST/ASTPrinter.cpp
> 
> Commit c01bff7ddb2152d1e60544b950f66e999ec112da by blangmuir:
> [code-completion] Allow ErrorType in solution to avoid assertion failure
> 
> add: 
> validation-test/IDE/crashers_fixed/108-swift-typechecker-typecheckcompletionsequence.swift
> delete: 
> validation-test/IDE/crashers/108-swift-typechecker-typecheckcompletionsequence.swift
> edit: lib/Sema/TypeCheckConstraints.cpp
> 
> Commit 8a4183199ccdfaf2289f482ee7233c952bfd576b by practicalswift:
> [swiftc (117 vs. 5256)] Add crasher in
> 
> add: 
> validation-test/compiler_crashers/28562-swift-typebase-getcanonicaltype.swift
> 
> Commit cfdaf9f14adcd201e243622ed15d382692d27efe by practicalswift:
> [gardening] Fix invalid Swift URLs.
> 
> edit: include/swift/Basic/ValueWitnessMangling.def
> edit: include/swift/SILOptimizer/Utils/SpecializationMangler.h
> edit: include/swift/Basic/Demangler.h
> edit: stdlib/public/SwiftShims/DispatchOverlayShims.h
> edit: include/swift/AST/ASTMangler.h
> edit: include/swift/Basic/ManglingUtils.h
> edit: lib/IRGen/IRGenMangler.cpp
> edit: lib/AST/ASTMangler.cpp
> edit: lib/SILOptimizer/Utils/SpecializationMangler.cpp
> edit: include/swift/Basic/ManglingMacros.h
> edit: include/swift/Basic/Mangler.h
> edit: lib/Basic/Demangler.cpp
> edit: lib/Basic/Mangler.cpp
> edit: lib/Basic/ManglingUtils.cpp
> edit: lib/IRGen/IRGenMangler.h
> 
> Commit d0021713d2cc16876b5622f474109e2fc6304640 by practicalswift:
> [gardening] Remove duplicate file.
> 
> delete: 
> validation-test/compiler_crashers_fixed/28466-segfault-0xc27624-0xc2741f-0xc25bb5-0xbcdbbb.swift~13e17147798fd3fdc17a53aabf4fe6450eb7c91e

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


Re: [swift-dev] Proposal: SILValue SSA Instructions

2016-12-06 Thread Michael Gottesman via swift-dev

> On Dec 6, 2016, at 11:29 AM, John McCall  wrote:
> 
>> On Dec 6, 2016, at 10:17 AM, Joe Groff via swift-dev  
>> wrote:
>>> On Dec 5, 2016, at 4:24 PM, Michael Gottesman via swift-dev 
>>>  wrote:
>>> 
>>> Hello everyone!
>>> 
>>> This is a proposal for 2 instructions needed to express borrowing via SSA 
>>> at the SIL level. The need for these were discovered while I was 
>>> prototyping a SIL ownership verifier.
>>> 
>>> A html version of the proposal:
>>> 
>>> https://gottesmm.github.io/proposals/sil-ownership-value-ssa-operations.html
>>> 
>>> And inline:
>>> 
>>> 
>>> 
>>> # Summary
>>> 
>>> This document proposes the addition of the following new SIL instructions:
>>> 
>>> 1. `store_borrow`
>>> 2. `begin_borrow`
>>> 
>>> These enable the expression of the following operations in Semantic SIL:
>>> 
>>> 1. Passing an `@guaranteed` value to an `@in_guaranteed` argument without
>>> performing a copy. (`store_borrow`)
>>> 2. Copying a field from an `@owned` aggregate without consuming or copying 
>>> the entire
>>> aggregate. (`begin_borrow`)
>>> 3. Passing an `@owned` value as an `@guaranteed` argument parameter.
>>> 
>>> # Definitions
>>> 
>>> ## store_borrow
>>> 
>>> Define `store_borrow` as:
>>> 
>>>  store_borrow %x to %y : $*T
>>>  ...
>>>  end_borrow %y from %x : $*T, $T
>>> 
>>>=>
>>> 
>>>  store %x to %y
>>> 
>>> `store_borrow` is needed to convert `@guaranteed` values to `@in_guaranteed`
>>> arguments. Without a `store_borrow`, this can only be expressed via an
>>> inefficient `copy_value` + `store` + `load` + `destroy_value` sequence:
>>> 
>>>  sil @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>>> 
>>>  sil @f : $@convention(thin) (@guaranteed Foo) -> () {
>>>  bb0(%0 : $Foo):
>>>%1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>>>%2 = alloc_stack $Foo
>>>%3 = copy_value %0 : $Foo
>>>store %3 to [init] %2 : $Foo
>>>apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
>>>%4 = load [take] %2 : $*Foo
>>>destroy_value %4 : $Foo
>>>dealloc_stack %2 : $Foo
>>>...
>>>  }
>>> 
>>> `store_borrow` allows us to express this in a more efficient and expressive 
>>> SIL:
>>> 
>>>  sil @f : $@convention(thin) (@guaranteed Foo) -> () {
>>>  bb0(%0 : $Foo):
>>>%1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>>>%2 = alloc_stack $Foo
>>>store_borrow %0 to %2 : $*T
>>>apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
>>>end_borrow %2 from %0 : $*T, $T
>>>dealloc_stack %2 : $Foo
>>>...
>>>  }
>>> 
>>> **NOTE** Once `@in_guaranteed` arguments become passed as values, 
>>> `store_borrow`
>>> will no longer be necessary.
>>> 
>>> ## begin_borrow
>>> 
>>> Define a `begin_borrow` instruction as:
>>> 
>>>  %borrowed_x = begin_borrow %x : $T
>>>  %borrow_x_field = struct_extract %borrowed_x : $T, #T.field
>>>  apply %f(%borrowed_x) : $@convention(thin) (@guaranteed T) -> ()
>>>  end_borrow %borrowed_x from %x : $T, $T
>>> 
>>>=>
>>> 
>>>  %x_field = struct_extract %x : $T, #T.field
>>>  apply %f(%x_field) : $@convention(thin) (@guaranteed T) -> ()
>>> 
>>> A `begin_borrow` instruction explicitly converts an `@owned` value to a
>>> `@guaranteed` value. The result of the `begin_borrow` is paired with an
>>> `end_borrow` instruction that explicitly represents the end scope of the
>>> `begin_borrow`.
>>> 
>>> `begin_borrow` also allows for the explicit borrowing of an `@owned` value 
>>> for
>>> the purpose of passing the value off to an `@guaranteed` parameter.
>>> 
>>> *NOTE* Alternatively, we could make it so that *_extract operations started
>>> borrow scopes, but this would make SIL less explicit from an ownership
>>> perspective since one wouldn't be able to visually identify the first
>>> `struct_extract` in a chain of `struct_extract`. In the case of 
>>> `begin_borrow`,
>>> there is no question and it is completely explicit.
>> 
>> begin_borrow SGTM. Does end_borrow need to be explicit, or could we leave it 
>> implicit and rely on dataflow diagnostics to ensure the borrowed value's 
>> lifetime is dominated by the owner's? It seems to me like, even if 
>> end_borrow is explicit, we'd want a lifetime-shortening pass to shrinkwrap 
>> end_borrows to the precise lifetime of the borrowed value's uses.
> 
> I definitely think it should be explicit, as Michael has it.
> 
> Michael, does store_borrow go away if/when we eliminate the need for 
> different code patterns for direct vs. indirect arguments?

Yes.

> 
> John.

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


Re: [swift-dev] Proposal: SILValue SSA Instructions

2016-12-06 Thread Joe Groff via swift-dev

> On Dec 6, 2016, at 11:29 AM, John McCall  wrote:
> 
>> On Dec 6, 2016, at 10:17 AM, Joe Groff via swift-dev  
>> wrote:
>>> On Dec 5, 2016, at 4:24 PM, Michael Gottesman via swift-dev 
>>>  wrote:
>>> 
>>> Hello everyone!
>>> 
>>> This is a proposal for 2 instructions needed to express borrowing via SSA 
>>> at the SIL level. The need for these were discovered while I was 
>>> prototyping a SIL ownership verifier.
>>> 
>>> A html version of the proposal:
>>> 
>>> https://gottesmm.github.io/proposals/sil-ownership-value-ssa-operations.html
>>> 
>>> And inline:
>>> 
>>> 
>>> 
>>> # Summary
>>> 
>>> This document proposes the addition of the following new SIL instructions:
>>> 
>>> 1. `store_borrow`
>>> 2. `begin_borrow`
>>> 
>>> These enable the expression of the following operations in Semantic SIL:
>>> 
>>> 1. Passing an `@guaranteed` value to an `@in_guaranteed` argument without
>>> performing a copy. (`store_borrow`)
>>> 2. Copying a field from an `@owned` aggregate without consuming or copying 
>>> the entire
>>> aggregate. (`begin_borrow`)
>>> 3. Passing an `@owned` value as an `@guaranteed` argument parameter.
>>> 
>>> # Definitions
>>> 
>>> ## store_borrow
>>> 
>>> Define `store_borrow` as:
>>> 
>>>  store_borrow %x to %y : $*T
>>>  ...
>>>  end_borrow %y from %x : $*T, $T
>>> 
>>>=>
>>> 
>>>  store %x to %y
>>> 
>>> `store_borrow` is needed to convert `@guaranteed` values to `@in_guaranteed`
>>> arguments. Without a `store_borrow`, this can only be expressed via an
>>> inefficient `copy_value` + `store` + `load` + `destroy_value` sequence:
>>> 
>>>  sil @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>>> 
>>>  sil @f : $@convention(thin) (@guaranteed Foo) -> () {
>>>  bb0(%0 : $Foo):
>>>%1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>>>%2 = alloc_stack $Foo
>>>%3 = copy_value %0 : $Foo
>>>store %3 to [init] %2 : $Foo
>>>apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
>>>%4 = load [take] %2 : $*Foo
>>>destroy_value %4 : $Foo
>>>dealloc_stack %2 : $Foo
>>>...
>>>  }
>>> 
>>> `store_borrow` allows us to express this in a more efficient and expressive 
>>> SIL:
>>> 
>>>  sil @f : $@convention(thin) (@guaranteed Foo) -> () {
>>>  bb0(%0 : $Foo):
>>>%1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>>>%2 = alloc_stack $Foo
>>>store_borrow %0 to %2 : $*T
>>>apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
>>>end_borrow %2 from %0 : $*T, $T
>>>dealloc_stack %2 : $Foo
>>>...
>>>  }
>>> 
>>> **NOTE** Once `@in_guaranteed` arguments become passed as values, 
>>> `store_borrow`
>>> will no longer be necessary.
>>> 
>>> ## begin_borrow
>>> 
>>> Define a `begin_borrow` instruction as:
>>> 
>>>  %borrowed_x = begin_borrow %x : $T
>>>  %borrow_x_field = struct_extract %borrowed_x : $T, #T.field
>>>  apply %f(%borrowed_x) : $@convention(thin) (@guaranteed T) -> ()
>>>  end_borrow %borrowed_x from %x : $T, $T
>>> 
>>>=>
>>> 
>>>  %x_field = struct_extract %x : $T, #T.field
>>>  apply %f(%x_field) : $@convention(thin) (@guaranteed T) -> ()
>>> 
>>> A `begin_borrow` instruction explicitly converts an `@owned` value to a
>>> `@guaranteed` value. The result of the `begin_borrow` is paired with an
>>> `end_borrow` instruction that explicitly represents the end scope of the
>>> `begin_borrow`.
>>> 
>>> `begin_borrow` also allows for the explicit borrowing of an `@owned` value 
>>> for
>>> the purpose of passing the value off to an `@guaranteed` parameter.
>>> 
>>> *NOTE* Alternatively, we could make it so that *_extract operations started
>>> borrow scopes, but this would make SIL less explicit from an ownership
>>> perspective since one wouldn't be able to visually identify the first
>>> `struct_extract` in a chain of `struct_extract`. In the case of 
>>> `begin_borrow`,
>>> there is no question and it is completely explicit.
>> 
>> begin_borrow SGTM. Does end_borrow need to be explicit, or could we leave it 
>> implicit and rely on dataflow diagnostics to ensure the borrowed value's 
>> lifetime is dominated by the owner's? It seems to me like, even if 
>> end_borrow is explicit, we'd want a lifetime-shortening pass to shrinkwrap 
>> end_borrows to the precise lifetime of the borrowed value's uses.
> 
> I definitely think it should be explicit, as Michael has it.

Would you be able to elaborate why? I suppose explicit is a more conservative 
starting point. It feels to me like making it explicit isn't doing much more 
than imposing more verification and optimization burden on us, but I'm probably 
missing something.

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


Re: [swift-dev] Proposal: SILValue SSA Instructions

2016-12-06 Thread John McCall via swift-dev
> On Dec 6, 2016, at 10:17 AM, Joe Groff via swift-dev  
> wrote:
>> On Dec 5, 2016, at 4:24 PM, Michael Gottesman via swift-dev 
>>  wrote:
>> 
>> Hello everyone!
>> 
>> This is a proposal for 2 instructions needed to express borrowing via SSA at 
>> the SIL level. The need for these were discovered while I was prototyping a 
>> SIL ownership verifier.
>> 
>> A html version of the proposal:
>> 
>> https://gottesmm.github.io/proposals/sil-ownership-value-ssa-operations.html
>> 
>> And inline:
>> 
>> 
>> 
>> # Summary
>> 
>> This document proposes the addition of the following new SIL instructions:
>> 
>> 1. `store_borrow`
>> 2. `begin_borrow`
>> 
>> These enable the expression of the following operations in Semantic SIL:
>> 
>> 1. Passing an `@guaranteed` value to an `@in_guaranteed` argument without
>>  performing a copy. (`store_borrow`)
>> 2. Copying a field from an `@owned` aggregate without consuming or copying 
>> the entire
>>  aggregate. (`begin_borrow`)
>> 3. Passing an `@owned` value as an `@guaranteed` argument parameter.
>> 
>> # Definitions
>> 
>> ## store_borrow
>> 
>> Define `store_borrow` as:
>> 
>>   store_borrow %x to %y : $*T
>>   ...
>>   end_borrow %y from %x : $*T, $T
>> 
>> =>
>> 
>>   store %x to %y
>> 
>> `store_borrow` is needed to convert `@guaranteed` values to `@in_guaranteed`
>> arguments. Without a `store_borrow`, this can only be expressed via an
>> inefficient `copy_value` + `store` + `load` + `destroy_value` sequence:
>> 
>>   sil @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>> 
>>   sil @f : $@convention(thin) (@guaranteed Foo) -> () {
>>   bb0(%0 : $Foo):
>> %1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>> %2 = alloc_stack $Foo
>> %3 = copy_value %0 : $Foo
>> store %3 to [init] %2 : $Foo
>> apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
>> %4 = load [take] %2 : $*Foo
>> destroy_value %4 : $Foo
>> dealloc_stack %2 : $Foo
>> ...
>>   }
>> 
>> `store_borrow` allows us to express this in a more efficient and expressive 
>> SIL:
>> 
>>   sil @f : $@convention(thin) (@guaranteed Foo) -> () {
>>   bb0(%0 : $Foo):
>> %1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>> %2 = alloc_stack $Foo
>> store_borrow %0 to %2 : $*T
>> apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
>> end_borrow %2 from %0 : $*T, $T
>> dealloc_stack %2 : $Foo
>> ...
>>   }
>> 
>> **NOTE** Once `@in_guaranteed` arguments become passed as values, 
>> `store_borrow`
>> will no longer be necessary.
>> 
>> ## begin_borrow
>> 
>> Define a `begin_borrow` instruction as:
>> 
>>   %borrowed_x = begin_borrow %x : $T
>>   %borrow_x_field = struct_extract %borrowed_x : $T, #T.field
>>   apply %f(%borrowed_x) : $@convention(thin) (@guaranteed T) -> ()
>>   end_borrow %borrowed_x from %x : $T, $T
>> 
>> =>
>> 
>>   %x_field = struct_extract %x : $T, #T.field
>>   apply %f(%x_field) : $@convention(thin) (@guaranteed T) -> ()
>> 
>> A `begin_borrow` instruction explicitly converts an `@owned` value to a
>> `@guaranteed` value. The result of the `begin_borrow` is paired with an
>> `end_borrow` instruction that explicitly represents the end scope of the
>> `begin_borrow`.
>> 
>> `begin_borrow` also allows for the explicit borrowing of an `@owned` value 
>> for
>> the purpose of passing the value off to an `@guaranteed` parameter.
>> 
>> *NOTE* Alternatively, we could make it so that *_extract operations started
>> borrow scopes, but this would make SIL less explicit from an ownership
>> perspective since one wouldn't be able to visually identify the first
>> `struct_extract` in a chain of `struct_extract`. In the case of 
>> `begin_borrow`,
>> there is no question and it is completely explicit.
> 
> begin_borrow SGTM. Does end_borrow need to be explicit, or could we leave it 
> implicit and rely on dataflow diagnostics to ensure the borrowed value's 
> lifetime is dominated by the owner's? It seems to me like, even if end_borrow 
> is explicit, we'd want a lifetime-shortening pass to shrinkwrap end_borrows 
> to the precise lifetime of the borrowed value's uses.

I definitely think it should be explicit, as Michael has it.

Michael, does store_borrow go away if/when we eliminate the need for different 
code patterns for direct vs. indirect arguments?

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


Re: [swift-dev] Proposal: SILValue SSA Instructions

2016-12-06 Thread Joe Groff via swift-dev

> On Dec 5, 2016, at 4:24 PM, Michael Gottesman via swift-dev 
>  wrote:
> 
> Hello everyone!
> 
> This is a proposal for 2 instructions needed to express borrowing via SSA at 
> the SIL level. The need for these were discovered while I was prototyping a 
> SIL ownership verifier.
> 
> A html version of the proposal:
> 
> https://gottesmm.github.io/proposals/sil-ownership-value-ssa-operations.html
> 
> And inline:
> 
> 
> 
> # Summary
> 
> This document proposes the addition of the following new SIL instructions:
> 
> 1. `store_borrow`
> 2. `begin_borrow`
> 
> These enable the expression of the following operations in Semantic SIL:
> 
> 1. Passing an `@guaranteed` value to an `@in_guaranteed` argument without
>   performing a copy. (`store_borrow`)
> 2. Copying a field from an `@owned` aggregate without consuming or copying 
> the entire
>   aggregate. (`begin_borrow`)
> 3. Passing an `@owned` value as an `@guaranteed` argument parameter.
> 
> # Definitions
> 
> ## store_borrow
> 
> Define `store_borrow` as:
> 
>store_borrow %x to %y : $*T
>...
>end_borrow %y from %x : $*T, $T
> 
>  =>
> 
>store %x to %y
> 
> `store_borrow` is needed to convert `@guaranteed` values to `@in_guaranteed`
> arguments. Without a `store_borrow`, this can only be expressed via an
> inefficient `copy_value` + `store` + `load` + `destroy_value` sequence:
> 
>sil @g : $@convention(thin) (@in_guaranteed Foo) -> ()
> 
>sil @f : $@convention(thin) (@guaranteed Foo) -> () {
>bb0(%0 : $Foo):
>  %1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>  %2 = alloc_stack $Foo
>  %3 = copy_value %0 : $Foo
>  store %3 to [init] %2 : $Foo
>  apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
>  %4 = load [take] %2 : $*Foo
>  destroy_value %4 : $Foo
>  dealloc_stack %2 : $Foo
>  ...
>}
> 
> `store_borrow` allows us to express this in a more efficient and expressive 
> SIL:
> 
>sil @f : $@convention(thin) (@guaranteed Foo) -> () {
>bb0(%0 : $Foo):
>  %1 = function_ref @g : $@convention(thin) (@in_guaranteed Foo) -> ()
>  %2 = alloc_stack $Foo
>  store_borrow %0 to %2 : $*T
>  apply %1(%2) : $@convention(thin) (@in_guaranteed Foo) -> ()
>  end_borrow %2 from %0 : $*T, $T
>  dealloc_stack %2 : $Foo
>  ...
>}
> 
> **NOTE** Once `@in_guaranteed` arguments become passed as values, 
> `store_borrow`
> will no longer be necessary.
> 
> ## begin_borrow
> 
> Define a `begin_borrow` instruction as:
> 
>%borrowed_x = begin_borrow %x : $T
>%borrow_x_field = struct_extract %borrowed_x : $T, #T.field
>apply %f(%borrowed_x) : $@convention(thin) (@guaranteed T) -> ()
>end_borrow %borrowed_x from %x : $T, $T
> 
>  =>
> 
>%x_field = struct_extract %x : $T, #T.field
>apply %f(%x_field) : $@convention(thin) (@guaranteed T) -> ()
> 
> A `begin_borrow` instruction explicitly converts an `@owned` value to a
> `@guaranteed` value. The result of the `begin_borrow` is paired with an
> `end_borrow` instruction that explicitly represents the end scope of the
> `begin_borrow`.
> 
> `begin_borrow` also allows for the explicit borrowing of an `@owned` value for
> the purpose of passing the value off to an `@guaranteed` parameter.
> 
> *NOTE* Alternatively, we could make it so that *_extract operations started
> borrow scopes, but this would make SIL less explicit from an ownership
> perspective since one wouldn't be able to visually identify the first
> `struct_extract` in a chain of `struct_extract`. In the case of 
> `begin_borrow`,
> there is no question and it is completely explicit.

begin_borrow SGTM. Does end_borrow need to be explicit, or could we leave it 
implicit and rely on dataflow diagnostics to ensure the borrowed value's 
lifetime is dominated by the owner's? It seems to me like, even if end_borrow 
is explicit, we'd want a lifetime-shortening pass to shrinkwrap end_borrows to 
the precise lifetime of the borrowed value's uses.

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


Re: [swift-dev] [Swift CI] Build Failure: 0. OSS - Swift Incremental RA - Ubuntu 16.04 (master) #906

2016-12-06 Thread Mehdi Amini via swift-dev
Hi Mishal,

To github.com:apple/swift-llvm.git
   a7fc86787be6..ffe61c2801c6  swift-3.1-branch -> swift-3.1-branch

Sorry about that, I ran make check with X86 and ARM only (faster…).

— 
Mehdi


> On Dec 5, 2016, at 11:38 PM, mishal_shah  wrote:
> 
> Hi Mehdi, 
> 
> Can you please look at this failure? 
> 
> /llvm/lib/Target/PowerPC/PPCMCInstLower.cpp:40:22: error: no member named 
> 'Mang' in 'llvm::AsmPrinter'
>   Mangler *Mang = AP.Mang;
>   ~~ ^
> 1 error generated.
> 
> 
> Thanks,
> Mishal Shah
>> On Dec 5, 2016, at 11:30 PM, no-re...@swift.org  
>> wrote:
>> 
>> [FAILURE] oss-swift-incremental-RA-linux-ubuntu-16_04 [#906]
>> 
>> Build URL:   
>> https://ci.swift.org/job/oss-swift-incremental-RA-linux-ubuntu-16_04/906/ 
>> 
>> Project: oss-swift-incremental-RA-linux-ubuntu-16_04
>> Date of build:   Mon, 05 Dec 2016 23:12:50 -0800
>> Build duration:  17 min
>> Identified problems:
>> 
>> Compile Error: This build failed because of a compile error. Below is a list 
>> of all errors in the build log:
>> Indication 1 
>> 
>> Changes
>> 
>> Commit 7a841c779fb64f42a090ea40d24822277ee2b810 by mehdi.amini:
>> Remove unused function getMang().
>> 
>> edit: lib/Target/X86/X86MCInstLower.cpp
>> 
>> Commit 8881b0ac145a61053b7bd6b4c4a7df3b6080155c by mehdi.amini:
>> Actually remove the Mangler from the AsmPrinter and clean up the places
>> 
>> edit: include/llvm/CodeGen/AsmPrinter.h
>> edit: lib/Target/NVPTX/NVPTXAsmPrinter.cpp
>> edit: lib/Target/XCore/XCoreMCInstLower.cpp
>> edit: lib/Target/XCore/XCoreMCInstLower.h
>> edit: lib/Target/XCore/XCoreAsmPrinter.cpp
>> edit: lib/Target/Lanai/LanaiAsmPrinter.cpp
>> edit: lib/Target/Lanai/LanaiMCInstLower.cpp
>> edit: lib/Target/Lanai/LanaiMCInstLower.h
>> 
>> Commit a7fc86787be6d0aa40a3f90673d6f1b1a2363c61 by mehdi.amini:
>> Attempt to fix a ThinLTO crash when incrementally linking WebKit
>> 
>> edit: lib/LTO/ThinLTOCodeGenerator.cpp
> 

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


[swift-dev] [Swift CI] Build Still Failing: 1. OSS - Swift (Tools Opt+Assert, Stdlib Opt+DebInfo+Assert, Resilience) - macOS (master) #38

2016-12-06 Thread no-reply--- via swift-dev
New issue found!Title: Report


  
  
 
 

 [FAILURE] oss-swift_tools-RA_stdlib-RDA_test-macos-resilience [#38] 


  Build URL:https://ci.swift.org/job/oss-swift_tools-RA_stdlib-RDA_test-macos-resilience/38/
  Project:oss-swift_tools-RA_stdlib-RDA_test-macos-resilience
  Date of build:Tue, 06 Dec 2016 03:47:00 -0800
  Build duration:12 min


Identified problems:Compile Error: This build failed because of a compile error. Below is a list of all errors in the build log:Indication 1




  





  Changes
  

  Commit bd50a6a5c641978616147334aca2ed0eb188f49a by abeingessner: [stdlib] delete dead code


  edit: stdlib/public/core/Builtin.swift


  
 

  Commit d1b753c46ab8cf301a6ca656e023f47247d8123f by spestov: Sema: Remove a workaround for an accessibility problem in the standard


  edit: stdlib/public/core/Arrays.swift.gyb

  edit: test/Sema/accessibility.swift

  edit: lib/Sema/TypeCheckProtocol.cpp


  
 

  Commit 4c914f5ab2516ae50923cdf3d342d4cd6c96163f by spestov: Sema: Use TypeReprs to check accessibility


  edit: test/Sema/accessibility_private.swift

  edit: lib/Sema/TypeChecker.h

  edit: lib/Sema/TypeCheckDecl.cpp


  
 

  Commit 56114ee9af9a52a8f65d87a586468bf576832022 by spestov: AST: Fix bug in AccessScope::intersectWith()


  edit: include/swift/AST/AccessScope.h


  
 

  Commit fcef5285eba4fe71cebf285a8d2cd157853cfd5e by spestov: Sema: Stop producing SubstitutedType for typealias member lookup


  edit: lib/Sema/TypeCheckType.cpp


  
 

  Commit d03b2414104dcbd63afa1f37acc77dbd49e7 by eeckstein: Mangling: support of new mangling in the demangler.


  edit: lib/Basic/Demangle.cpp


  
 

  Commit 1b10c18b3e5b7cdf74235116018c0ae0ba7fc3bc by me: SILOptimizer: Replace [].append(contentsOf:) with [].append(element:)


  edit: lib/SILOptimizer/Analysis/ArraySemantic.cpp

  edit: include/swift/AST/ASTContext.h

  edit: lib/SILOptimizer/LoopTransforms/COWArrayOpt.cpp

  edit: benchmark/single-source/ArrayAppend.swift

  edit: stdlib/public/core/Arrays.swift.gyb

  edit: include/swift/SILOptimizer/Analysis/ArraySemantic.h

  edit: lib/SILOptimizer/Transforms/ArrayElementValuePropagation.cpp

  edit: lib/AST/ASTContext.cpp

  edit: test/SILOptimizer/array_element_propagation.sil


  
 

  Commit 3a95673aa348b9e0d37996feb488acc68b5cd0bf by janek: [Sema] Don't crash on `@IBDesignable extensions` wit no type


  edit: lib/Sema/TypeCheckAttr.cpp

  add: validation-test/compiler_crashers_fixed/28556-val-isa-used-on-a-null-pointer.swift

  delete: validation-test/compiler_crashers/28556-val-isa-used-on-a-null-pointer.swift


  
 

  Commit 354fd29f312c02557a3ec8fe94afc3edcfa6adc7 by rlevenstein: Add a new -assume-single-threaded option


  add: lib/SILOptimizer/Transforms/AssumeSingleThreaded.cpp

  add: test/SILOptimizer/assume_single_threaded.sil

  edit: lib/SILOptimizer/Transforms/CMakeLists.txt

  edit: include/swift/AST/SILOptions.h

  edit: include/swift/SILOptimizer/PassManager/Passes.def

  edit: lib/SILOptimizer/PassManager/Passes.cpp

  edit: include/swift/Option/Options.td

  edit: lib/Frontend/CompilerInvocation.cpp


  
 

  Commit 9894eeda45909e979c6b2fcd1761eec7c1ee2df9 by blangmuir: [code-completion] Fix crash with missing func body in type-checking


  edit: lib/Sema/TypeCheckStmt.cpp

  add: validation-test/IDE/crashers_fixed/107-swift-typechecker-typecheckabstractfunctionbodyuntil.swift

  add: validation-test/IDE/crashers_fixed/008-swift-typechecker-typecheckfunctionbodyuntil.swift

  delete: validation-test/IDE/crashers/107-swift-typechecker-typecheckabstractfunctionbodyuntil.swift

  delete: validation-test/IDE/crashers/094-swift-typechecker-lookupmembertype.swift

  delete: validation-test/IDE/crashers/008-swift-typechecker-typecheckfunctionbodyuntil.swift

  add: validation-test/IDE/crashers_fixed/094-swift-typechecker-lookupmembertype.swift


  
 

  Commit 1ca799bfdadd151e15cc7f601c3ff667757f by blangmuir: [code-completion] Fix crash in typeCheckConstructorBodyUntil with null


  delete: validation-test/IDE/crashers/040-swift-typechecker-typecheckconstructorbodyuntil.swift

  add: validation-test/IDE/crashers_fixed/040-swift-typechecker-typecheckconstructorbodyuntil.swift

  edit: lib/Sema/TypeCheckStmt.cpp


  
 

  Commit 5699b5a1e0d793f2deffc513f1416e5a1fc64b46 by xi_ge: Fixing /IDE/crashers/012-swift-mangle-mangler-manglecontext.swift