https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117912
Sam James <sjames at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|c |tree-optimization
--- Comment #7 from Sam James <sjames at gcc dot gnu.org> ---
At -O2, 4.8.1 fails and 4.7.4 works for:
```
long sized_strscpy_size;
struct audit_context *audit_context();
struct lsm_prop {
} security_task_getlsmprop_obj();
void __write_overflow() __attribute__((
__error__("detected write beyond size of object (1st parameter)")));
struct audit_context {
int target_pid;
struct lsm_prop target_ref;
char target_comm[];
} __audit_ptrace() {
struct audit_context *context = audit_context();
security_task_getlsmprop_obj(&context->target_ref);
unsigned long p_size = __builtin_object_size(context->target_comm, 1);
if (p_size < sized_strscpy_size)
__write_overflow();
}
```
Clang accepts it. s/_dynamic/ to test with older GCC.