On Jun 16, 2011, at 11:08 AM, Nico Weber wrote:
> Thanks!
>
> On Thu, Jun 16, 2011 at 10:56 AM, Douglas Gregor <[email protected]> wrote:
>> Author: dgregor
>> Date: Thu Jun 16 12:56:04 2011
>> New Revision: 133173
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=133173&view=rev
>> Log:
>> Teach the warning about non-POD memset/memcpy/memmove to deal with the
>> __builtin_ versions of these functions as well as the normal function
>> versions, so that it works on platforms where memset/memcpy/memmove
>> are macros that map down to the builtins (e.g., Darwin). Fixes
>> <rdar://problem/9372688>.
>
> Out of idle curiosity, what's the radar about?
It's about warning when memcpy/memmove'ing lifetime-qualified objects in
Objective-C ARC, e.g.,
void f(__strong id dest[], __strong id source[], int n) {
memcpy(dest, source, n * sizeof(__strong id));
}
should (and now does) produce:
t.m:5:3: warning: destination for this '__builtin___memcpy_chk' call is a
pointer to lifetime-qualified type '__strong id' [-Wnon-pod-memaccess]
memcpy(dest, source, n * sizeof(__strong id));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
t.m:5:10: note: instantiated from:
memcpy(dest, source, n * sizeof(__strong id));
^
t.m:5:3: note: explicitly cast the pointer to silence this warning
The actual warning came in with ARC yesterday, but it didn't work properly
without r133173.
- Doug
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits