<div dir="ltr">On Mon, Apr 3, 2017 at 12:53 PM Ben Rimmington &lt;<a href="mailto:me@benrimmington.com">me@benrimmington.com</a>&gt; wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&lt;<a href="https://github.com/apple/swift/pull/8325" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/apple/swift/pull/8325</a>&gt; (Merged 10 days ago)<br class="gmail_msg"></blockquote><div><br></div><div>That&#39;s a relief! I thought I was losing my mind that such an obvious optimization had been left on the floor, especially when I also thought I remembered it working before.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br class="gmail_msg">
&gt; On 3 Apr 2017, at 20:32, Charlie Monroe wrote:<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;&gt; On Apr 3, 2017, at 9:25 PM, Ben Rimmington wrote:<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; On 3 Apr 2017, at 17:55, Tony Allevato wrote:<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; I just checked with -O and without and was surprised to find that `let x = &quot;abc&quot; + &quot;def&quot; + &quot;ghi&quot;` wasn&#39;t collapsed into a single string literal &quot;abcdefghi&quot; in the generated assembly code. Maybe it&#39;s more difficult than it is in some other languages because of operator overloads and different kinds of text literals (strings, extended grapheme clusters, Unicode scalars)?<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; Is this a regression since Swift 2.0 added the optimization?<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; I&#39;d say it&#39;s a regression since 3.0 since I remember testing the optimizer even being able to put together this during compile time:<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; struct URLString {<br class="gmail_msg">
&gt;       let urlString: String<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;       init(host: String, path: String, query: String) {<br class="gmail_msg">
&gt;               self.urlString = &quot;http://&quot; + host + path + &quot;?&quot; + query<br class="gmail_msg">
&gt;       }<br class="gmail_msg">
&gt; }<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; URLString(host: &quot;<a href="http://apple.com" rel="noreferrer" class="gmail_msg" target="_blank">apple.com</a>&quot;, path: &quot;/mac&quot;, query: &quot;target=imac&quot;)<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; This produced a single string literal - I confirmed this using MachOView on the final binary...<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;&gt;      * Concatenation of Swift string literals, including across multiple lines, is<br class="gmail_msg">
&gt;&gt;        now a guaranteed compile-time optimization, even at `-Onone`. **(19125926)**<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; &lt;<a href="https://github.com/apple/swift/blame/97db3931f2c5a21ea87ad6e71cdecbec325bff91/CHANGELOG.md#L1329-L1330" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/apple/swift/blame/97db3931f2c5a21ea87ad6e71cdecbec325bff91/CHANGELOG.md#L1329-L1330</a>&gt;<br class="gmail_msg">
</blockquote></div></div>