<div dir="ltr">On Fri, Jun 14, 2013 at 3:03 AM, Chen Xiliang <span dir="ltr"><<a href="mailto:xlchen1291@gmail.com" target="_blank">xlchen1291@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I recently discovered that I can use a fixed size array as a return type in Objective-C like this:<br>
<br>
+ (int[2])getIntArray {<br>
    int i = 1;<br>
    int i2 = 2;<br>
    return (int[2]) {i, i2};<br>
}<br>
<br>
It woks as exactly as I expected in 32bits build (iOS device, iOS simulator, 32bits OSX app) but it failed badly in 64bits build.<br>
<br>
>From the disassembly for 32bits build, I found that it is using _objc_msgSend_stret to send the message so the whole array is copied and returned.<br>
>From the disassembly for 64bits build, it is using _objc_msgSend to send the message so only a pointer is returned.<br>
<br>
I wonder is this some undocumented extension or just undefined behavior that happened to be working?<br></blockquote><div><br></div><div>Invalid code.  clang is supposed to report an error.</div><div><br></div><div>-Eli</div>
</div></div></div>