https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103255
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |11.3
Last reconfirmed| |2021-11-15
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.
Here is a testcase which does not need any (predefined location) memory access
to get the failure:
struct header {
unsigned a;
unsigned b;
unsigned c;
};
#define ADDR 0x400000
#define OFF 0x20
int main(void)
{
struct header *hdr = 0;
unsigned long ofs;
volatile int t = 1;
for (ofs = OFF; ofs <= OFF; ofs += 0x1000) {
struct header *tmp;
tmp = (struct header *)(ADDR + ofs);
if (t) {
hdr = tmp;
break;
}
}
if (hdr == 0)
return 0;
unsigned *tt = &hdr->b;
if ((__SIZE_TYPE__)tt != (ADDR + OFF + __builtin_offsetof(struct header,
b)))
__builtin_abort();
return 0;
}