<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Ok, I see.&nbsp;<div class=""><br class=""></div><div class="">But <b class="">with</b><b class="">MemoryRebound</b> requires a return value. Don’t think there’s any way around that…compiler error<div class=""><span class="">And mainPtr (now typed correctly/safely) needs to access the appropriate data structure mainPassFrameData.</span></div><div class=""><span class="">Hence the external mainPtr.pointee assignment (since I can’t do so safely within the closure -&gt; Swift compiler crashes)</span></div><div class=""><br class=""></div><div class="">Gerard Iglesias crafted another version of this snippet of code using <b class="">assumingMemoryBound </b>but also assigns pointee externally.</div><div class="">So did the original sample code.</div><div class=""><br class=""></div><div class="">Haven’t we achieved the goal of “safely" re-typing raw memory on the fly? To "help the compiler help us" so to speak…</div><div class="">What do you believe is so “unsafe" about the external pointee assignment? Since the compiler won’t let us do so anymore&nbsp;</div><div class="">If the types aren’t all correctly aligned.</div><div class=""><br class=""></div><div class="">Curious to see what Andrew Trick has to say about all of this. Good idea to cc: him</div><div class=""><br class=""></div><div class="">In the meantime, both versions seem to work. Plus am learning a lot about typed versus untyped memory access in Swift...</div><div class=""><br class=""></div><div class="">Best - Patrice</div><div class=""><span class=""><br class="">On Sep 3, 2016, at 9:27 PM, Jacob Bandes-Storch via swift-users &lt;<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>&gt; wrote:<br class=""><blockquote type="cite" class=""><br class="">I was referring to this:<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;mainPtr :&nbsp;UnsafeMutablePointer&lt;MainPass&gt; = shadowPtr.advanced(by:&nbsp;1).withMemoryRebound(to:&nbsp;MainPass.self, capacity:&nbsp;1) {$0}<br class="">&nbsp; &nbsp; &nbsp; &nbsp; mainPtr.pointee&nbsp;=&nbsp;mainPassFrameData<br class=""><br class="">The result of $0 is being returned from the block and used later.<br class=""><br class="">cc'ing Andrew Trick on this conversation because his input would be quite useful :-)<br class=""><br class="">Jacob<br class=""><br class="">On Sat, Sep 3, 2016 at 2:03 PM, Patrice Kouame&nbsp;&lt;<a href="mailto:pkouame@me.com" class="">pkouame@me.com</a>&gt;&nbsp;wrote:<br class=""><br class="">Not sure what you mean?&nbsp;<br class="">The positional arg $0 is never used outside the closure whatever the version...<br class="">No attempt is ever made to save and reuse after withMemoryRebound?<br class="">Why would I use a separate function?<br class=""><br class="">Are we looking at the same code? 🤓<br class=""><br class="">rédigé sur mon iPhone.<br class=""><br class="">On Sep 3, 2016, at 4:16 PM, Jacob Bandes-Storch &lt;jtbandes@gmail.com&gt; wrote:<br class=""><br class=""><blockquote type="cite" class="">Yikes! That's unsafe! When using withMemoryRebound, I think you're only supposed to use the argument $0 inside the block. Saving it and using it after withMemoryRebound is probably undefined behavior. But maybe you can move your ".pointee&nbsp;= x" into a separate function rather than using a closure?<br class=""><br class="">On Sat, Sep 3, 2016 at 1:12 PM, Patrice Kouame via swift-users&nbsp;&lt;swift-users@swift.org&gt;&nbsp;wrote:<br class="">Finally Success! &nbsp;I’m seeing my pretty little 3D twirling Metal Renderer cubes again… Here’s how<br class=""><br class="">Snippet of old &nbsp;sample code which no longer compiles in Xcode 8 beta 6 with stricter Swift3 unsafe type casting restrictions&nbsp;<br class="">(in MetalView.swift from&nbsp;# Adopting Metal II: Designing and Implementing a Real-World Metal Renderer)<br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>let shadowPtr = UnsafeMutablePointer&lt;ShadowPass&gt;(constantBufferForFrame.contents())<br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>let mainPtr = UnsafeMutablePointer&lt;MainPass&gt;(shadowPtr.advanced(by: 1))<br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>mainPtr.pointee = mainPassFrameData<br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>var ptr = UnsafeMutablePointer&lt;ObjectData&gt;(mainPtr.advanced(by: 1))<br class=""><br class="">My conversion attempt that crashes Swift 3 Xcode 8 beta 6 (see &nbsp;RADAR&nbsp;28150447 - Swift 3 UnsafeMutablePointer conversion crashes the compiler and IDE)<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;shadowPtr = constantBufferForFrame.contents().bindMemory(to:&nbsp;ShadowPass.self, capacity: MemoryLayout&lt;shadowPassData&gt;.size)<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;mainPtr :&nbsp;UnsafeMutablePointer&lt;MainPass&gt; = shadowPtr.advanced(by:&nbsp;1).withMemoryRebound(to:&nbsp;MainPass.self, capacity:&nbsp;1) {<br class=""><span class="Apple-tab-span" style="white-space:pre">                </span>$0.pointee = mainPassFrameData<br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>}<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;var&nbsp;ptr :&nbsp;UnsafeMutablePointer&lt;ObjectData&gt; = mainPtr.advanced(by:&nbsp;1).withMemoryRebound(to:&nbsp;ObjectData.self, capacity:&nbsp;MemoryLayout&lt;&nbsp;ObjectData &gt;.size) {$0}<br class=""><br class="">Latest conversion that make Xcode and Swift 3 smile again...<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;shadowPtr = constantBufferForFrame.contents().bindMemory(to:&nbsp;ShadowPass.self, capacity:&nbsp;shadowPassData.count)<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;mainPtr :&nbsp;UnsafeMutablePointer&lt;MainPass&gt; = shadowPtr.advanced(by:&nbsp;1).withMemoryRebound(to:&nbsp;MainPass.self, capacity:&nbsp;1) {$0}<br class="">&nbsp; &nbsp; &nbsp; &nbsp; mainPtr.pointee&nbsp;=&nbsp;mainPassFrameData<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;var&nbsp;ptr :&nbsp;UnsafeMutablePointer&lt;ObjectData&gt; = mainPtr.advanced(by:&nbsp;1).withMemoryRebound(to:&nbsp;ObjectData.self, capacity:&nbsp;objectsToRender) {$0}<br class=""><br class="">Yes… Xcode/Swift3 SIL generation definitely did NOT like my "$0.pointee = mainPassFrameData" statement.&nbsp;<br class="">Apparently, reassigning the pointee within the closure makes Swift gag out of disgust. Sorry ;-(<br class="">That’s what I get&nbsp;for trying to be fancy…<br class="">And fixed my “capacity” issues thanks to some previous posters.<br class=""><br class="">Hope this helps anyone trying to get the Metal projects to compile again.<br class=""><br class="">At least I got a Radar out of this ;-) Compilers should never burn and crash out like this...<br class=""><br class="">Regards to all, Patrice<br class=""><br class=""><br class=""><blockquote type="cite" class="">On Sep 3, 2016, at 1:22 PM, Patrice Kouame via swift-users &lt;swift-users@swift.org&gt; wrote:<br class=""><br class="">Gerard-&nbsp;<br class=""><br class="">Excellent! &nbsp;Looking forward to seeing your fix (hoping you get your book back soon ;-) )<br class=""><br class="">I think Xcode/Swift gags on the last ptr advance to objectData. &nbsp;I recently tried another variant using withUnsafeMutablePointer like this:<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp; var ptr : UnsafeMutablePointer&lt;ObjectData&gt; &nbsp;= withUnsafeMutablePointer(to: &amp;mainPtr) {<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $0.withMemoryRebound(to: ObjectData.self, capacity: objectsToRender) {<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $0.pointee = renderables[0].objectData<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br class="">&nbsp; &nbsp; &nbsp; &nbsp; }<br class=""><br class="">..but still crashes with no hints.<br class=""><br class="">My bug report also mentions that the Xcode migration/conversion tool is incomplete.&nbsp;&nbsp;<br class="">It handles the “simpler" UnsafeMutableRawPointer&lt;X&gt; to UnsafeMutablePonter&lt;Y&gt; with bindMemory cases correctly (one still has to mind the capacity value though)<br class="">In all fairness, migrating/converting automagically in these cases is always a little bit tricky - the proposed Xcode fixes should always be reviewed by a human...<br class=""><br class="">Patrice<br class=""><br class=""><blockquote type="cite" class="">On Sep 3, 2016, at 1:05 PM, Gerard Iglesias via swift-users &lt;swift-users@swift.org&gt; wrote:<br class=""><br class="">Ok<br class=""><br class="">For the record I succeeded this transformation phase last week<br class=""><br class="">I remember the tedious stuff to advance pointer from one struct to the other kind of struct... it worked<br class=""><br class="">But I don't have my MacBook with me, only the phone, the six :)<br class=""><br class="">Gérard&nbsp;<br class=""><br class="">Le 3 sept. 2016 à 18:22, Patrice Kouame &lt;pkouame@me.com&gt; a écrit :<br class=""><br class=""><blockquote type="cite" class="">Indeed. There is a difference between stride and size, but I interpreted capacity incorrectly for my purposes. &nbsp;It should indicate the number of &lt;T&gt; elements (not their size - right?) and the snippets below should work.<br class=""><br class="">Still, compiler crashes and Xcode IDE is left in inconsistent state. &nbsp;So I filed this Apple radar against Developer Tools.<br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>28150447 - Swift 3 UnsafeMutablePointer conversion crashes the compiler and IDE<br class="">Should I file a Swift bug too? Would that be helpful?<br class=""><br class="">Regards, Patrice<br class=""><br class=""><blockquote type="cite" class="">On Sep 3, 2016, at 11:39 AM, Gerard Iglesias via swift-users &lt;swift-users@swift.org&gt; wrote:<br class=""><br class="">Hello,<br class=""><br class="">I think that it is more secure to use stride in place of size, sometimes it is not the same value.<br class=""><br class="">I use it in my own use of raw bindings&nbsp;<br class=""><br class="">Regards<br class=""><br class="">Gérard&nbsp;<br class=""><br class="">Le 3 sept. 2016 à 10:03, Patrice Kouame via swift-users &lt;swift-users@swift.org&gt; a écrit :<br class=""><br class=""><blockquote type="cite" class="">Hi Jacob -&nbsp;<br class=""><br class="">I think you’re right. “capacity” should be the count of type T elements in my buffer. &nbsp;So in my case that line should read<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;shadowPtr = constantBufferForFrame.contents().bindMemory(to: ShadowPass.self, capacity: shadowPassData.count)<br class=""><br class="">The withMemoryRebound calls need similar adjustments. The pointer to MainPass is actually a single structure to it should be safe to do this<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;mainPtr :&nbsp;UnsafeMutablePointer&lt;MainPass&gt; = shadowPtr.advanced(by:&nbsp;1).withMemoryRebound(to: MainPass.self, capacity:&nbsp;1) {<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $0.pointee = mainPassFrameData<br class="">&nbsp; &nbsp; &nbsp; &nbsp; }<br class=""><br class="">Whereas the unsafe pointer to &lt;ObjectData&gt; is actually a buffer of renderable objects, so this should work:<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;var&nbsp;ptr :&nbsp;UnsafeMutablePointer&lt;ObjectData&gt; = mainPtr.advanced(by:&nbsp;1).withMemoryRebound(to: ObjectData.self, capacity: objectsToRender) {_ in<br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>}<br class=""><br class="">There are surely ways to refactor and simplify this, but I’m trying to retain as much of the original sample code approach as possible.<br class=""><br class="">However, the compiler still segs badly.&nbsp;<br class="">Xcode also borks an internal error often.&nbsp;Only cleaning or restarting the project can clear up that state.<br class="">Compilers (or Playgrounds for that matter) should never crash, and I’m not sure where to file this bug : Swift or Apple radar against Xcode or both? I now Xcode 8 is beta but…it’s been doing this for quite a while now...<br class=""><br class="">In both our “close to the metal” (no pun intended) cases, it seems like a lot of churning for very little gain. Don’t you think? The easier, but “unsafe” casting afforded previously did the trick with the normal caveats.<br class="">Don’t get me wrong, I love Swift and “get" all the neat type safety features. Guess we can’t have our cake and eat it too, especially when interfacing with “unsafe” C APIs.<br class=""><br class="">Anyway, back to rtfm … maybe some of the Swift Gods can chime in? &nbsp;;-)&nbsp;<br class=""><br class="">I must be doing something stupid...Patrice<br class=""><br class=""><blockquote type="cite" class="">On Sep 3, 2016, at 2:32 AM, Jacob Bandes-Storch &lt;jtbandes@gmail.com&gt; wrote:<br class=""><br class="">Hi Patrice,<br class="">I don't have a solution for you, but I just wanted to point out what I think may be an error with your use of the new UnsafeRawPointer APIs:<br class=""><br class="">constantBufferForFrame.contents().bindMemory(to: ShadowPass.self, capacity: MemoryLayout&lt;ShadowPass&gt;.size)<br class=""><br class="">I believe the `capacity` should actually be the number of ShadowPass elements in the buffer, not the size of each element. Using `bindMemory(to: ShadowPass.self` already implies that MemoryLayout&lt;ShadowPass&gt;.size is the size&nbsp;of each element.<br class=""><br class="">More info at&nbsp;https://developer.apple.com/reference/swift/unsaferawpointer/2428875-bindmemory<br class=""><br class="">I just updated a small Metal project of mine to Swift 3. I ran into some compiler (playground) crashes, but it does seem to work most of the time. Although I only have 1 buffer :-)&nbsp;https://github.com/jtbandes/Metalbrot.playground<br class=""><br class="">Jacob<br class=""><br class="">On Fri, Sep 2, 2016 at 11:00 AM, Patrice Kouame via swift-users&nbsp;&lt;swift-users@swift.org&gt;&nbsp;wrote:<br class="">Hi all -&nbsp;<br class=""><br class="">I’m converting Apple’s Swift Sample "Adopting Metal II: Designing and Implementing a Real-World Metal Renderer” in Xcode 8 beta6 to the latest UnsafeMutablePointer API for untyped memory access.&nbsp;&nbsp;<br class="">Changes are necessary in MetalView.swift (Apple hasn’t updated their sample code for the latest beta yet…)&nbsp;<br class="">The Swift Compiler crashes (Segmentation Fault:&nbsp;11) on the attempt:<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// Grab a pointer to the constant buffer's data store<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// Since we are using Swift, it is easier to cast the pointer to the ShadowPass type to fill the constant buffer<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// We need to make a copy of these so the block captures the correct data<br class=""><br class="">// &nbsp; &nbsp; &nbsp;let shadowPtr = UnsafeMutablePointer&lt;ShadowPass&gt;(constantBufferForFrame.contents())<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;shadowPtr = constantBufferForFrame.contents().bindMemory(to: ShadowPass.self, capacity: MemoryLayout&lt;ShadowPass&gt;.size)<br class="">&nbsp; &nbsp; &nbsp; &nbsp; shadowPtr.pointee = shadowPassData[0]<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;//More Swift specific stuff - advance pointer and cast to MainPass<br class=""><br class="">// &nbsp; &nbsp; &nbsp;let mainPtr = UnsafeMutablePointer&lt;MainPass&gt;(shadowPtr.advanced(by: 1))<br class="">// &nbsp; &nbsp; &nbsp;mainPtr.pointee = mainPassFrameData<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;mainPtr :&nbsp;UnsafeMutablePointer&lt;MainPass&gt;&nbsp; = shadowPtr.advanced(by:&nbsp;1).withMemoryRebound(to: MainPass.self, capacity: MemoryLayout&lt;MainPass&gt;.size) {<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $0.pointee = mainPassFrameData<br class="">&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;//Advance and cast to ObjectData<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br class="">// &nbsp; &nbsp; &nbsp;var ptr = UnsafeMutablePointer&lt;ObjectData&gt;(mainPtr.advanced(by: 1))<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;var&nbsp;ptr :&nbsp;UnsafeMutablePointer&lt;ObjectData&gt; = mainPtr.advanced(by:&nbsp;1).withMemoryRebound(to: ObjectData.self, capacity: MemoryLayout&lt;ObjectData&gt;.size) {_&nbsp;in<br class="">&nbsp; &nbsp; &nbsp; &nbsp; }<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;shadowOffset =&nbsp;0<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;mainPassOffset = MemoryLayout&lt;ShadowPass&gt;.size + shadowOffset<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;objectDataOffset = MemoryLayout&lt;MainPass&gt;.size + mainPassOffset<br class=""><br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// Update position of all the objects<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;if&nbsp;multithreadedUpdate {<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DispatchQueue.concurrentPerform(iterations: objectsToRender) { i&nbsp;in<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;let&nbsp;thisPtr = ptr.advanced(by: i)<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;_&nbsp;=&nbsp;self.renderables[i].UpdateData(ptr, deltaTime:&nbsp;1.0/60.0)<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br class="">&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;else&nbsp;{<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;for&nbsp;index&nbsp;in&nbsp;0..&lt;objectsToRender {<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ptr = renderables[index].UpdateData(ptr, deltaTime:&nbsp;1.0/60.0)<br class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br class="">&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br class="">&nbsp; &nbsp; &nbsp; &nbsp; ptr = ptr.advanced(by: objectsToRender)<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;_&nbsp;= groundPlane!.UpdateData(ptr, deltaTime:&nbsp;1.0/60.0)<br class=""><br class="">Any help is appreciated. &nbsp;I have the latest Xcode log handy if necessary. &nbsp;Here’s a clip of the stack trace.<br class=""><br class="">0 &nbsp;swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x000000010714a99d PrintStackTraceSignalHandler(void*) + 45<br class="">1 &nbsp;swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x000000010714a3e6 SignalHandler(int) + 470<br class="">2 &nbsp;libsystem_platform.dylib 0x00007fff91461bba _sigtramp + 26<br class="">3 &nbsp;libsystem_platform.dylib 000000000000000000 _sigtramp + 1857676384<br class="">4 &nbsp;swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001047207b3 (anonymous namespace)::SILGenApply::visitExpr(swift::Expr*) + 51<br class="">5 &nbsp;swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0000000104723ace (anonymous namespace)::SILGenApply::visitApplyExpr(swift::ApplyExpr*) + 5182<br class="">6 &nbsp;swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0000000104711cc1 prepareApplyExpr(swift::Lowering::SILGenFunction&amp;, swift::Expr*) + 273<br class="">7 &nbsp;swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001047624e7 swift::ASTVisitor&lt;(anonymous namespace)::RValueEmitter, swift::Lowering::RValue, void, void, void, void, void, swift::Lowering::SGFContext&gt;::visit(swift::Expr*,&nbsp;swift::Lowering::SGFContext) + 103<br class="">8 &nbsp;swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0000000104762313 swift::Lowering::SILGenFunction::emitExprInto(swift::Expr*, swift::Lowering::Initialization*) + 195<br class="">9 &nbsp;swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x000000010474fbc3 swift::Lowering::SILGenFunction::emitPatternBinding(swift::PatternBindingDecl*, unsigned int) + 195<br class="">10 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001047077bd swift::ASTVisitor&lt;swift::Lowering::SILGenFunction, void, void, void, void, void, void&gt;::visit(swift::Decl*) + 125<br class="">11 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001047c0019 swift::ASTVisitor&lt;(anonymous namespace)::StmtEmitter, void, void, void, void, void, void&gt;::visit(swift::Stmt*) + 4169<br class="">12 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001047809ba swift::Lowering::SILGenFunction::emitFunction(swift::FuncDecl*) + 314<br class="">13 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001046fd775 swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*)::$_1::operator()(swift::SILFunction*) const + 1877<br class="">14 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001046fc322 swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*) + 626<br class="">15 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001047c7007 (anonymous namespace)::SILGenType::emitType() + 1271<br class="">16 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001047c6a9e swift::Lowering::SILGenModule::visitNominalTypeDecl(swift::NominalTypeDecl*) + 30<br class="">17 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0000000104709093 swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*, unsigned int) + 1795<br class="">18 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x000000010470ad4d swift::SILModule::constructSIL(swift::ModuleDecl*, swift::SILOptions&amp;, swift::FileUnit*, llvm::Optional&lt;unsigned int&gt;, bool, bool) + 1629<br class="">19 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00000001045621bf performCompile(swift::CompilerInstance&amp;, swift::CompilerInvocation&amp;, llvm::ArrayRef&lt;char const*&gt;, int&amp;, swift::FrontendObserver*) + 19487<br class="">20 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x000000010455b2c5 swift::performFrontend(llvm::ArrayRef&lt;char const*&gt;, char const*, void*, swift::FrontendObserver*) + 17029<br class="">21 swift &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x000000010451888d main + 8685<br class="">22 libdyld.dylib &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00007fff91255255 start + 1<br class=""><br class=""><br class="">Patrice<br class=""><br class=""><br class="">_______________________________________________<br class="">swift-users mailing list<br class="">swift-users@swift.org<br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""><br class=""><br class=""></blockquote><br class=""></blockquote><blockquote type="cite" class="">_______________________________________________<br class="">swift-users mailing list<br class="">swift-users@swift.org<br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></blockquote>_______________________________________________<br class="">swift-users mailing list<br class="">swift-users@swift.org<br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></blockquote><br class=""></blockquote>_______________________________________________<br class="">swift-users mailing list<br class="">swift-users@swift.org<br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></blockquote><br class="">_______________________________________________<br class="">swift-users mailing list<br class="">swift-users@swift.org<br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></blockquote><br class=""><br class="">_______________________________________________<br class="">swift-users mailing list<br class="">swift-users@swift.org<br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""><br class=""><br class=""></blockquote><br class="">_______________________________________________<br class="">swift-users mailing list<br class="">swift-users@swift.org<br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></blockquote><br class=""></span></div></div></body></html>