https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116570
Xi Ruoyao <xry111 at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |xry111 at gcc dot gnu.org Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- The attribute is not enough to prove the store is dead. For example, in another TU: static void *last_alloc_blk; void *malloc_test(size_t size, size_t align) { last_alloc_blk = malloc(size + align); void *p = (void *)(((uintptr_t) last_alloc_blk + align - 1) & ~(align - 1)); record_blk_for_ptr(p, last_alloc_blk); } void *free_test(void *p) __attribute__((access(none, 1))); { // uses the content of the block allocated last time // note that we are NOT accessing anything via p // so we are not violating the access attribute do_something_with(last_alloc_blk); free(get_blk_and_remove_the_record(p)); }