http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49872
--- Comment #2 from sgunderson at bigfoot dot com 2011-07-28 10:09:51 UTC --- I'm not sure if I've seen exactly this construction in real-world code, but I've certainly seen examples of the hybrid I sketched out (looking at one was what motivated me to file the bug), ie. something like: struct S { int f[1024]; int g; }; void func(struct S* s) { memset(s->f, 0, sizeof(s->f)); s->g = 0; } which I would argue should be rewritten to void func(struct S* s) { memset(s->f, 0, sizeof(s->f) + sizeof(s->g)); } I'd argue that programmers should not be doing this kind of optimization themselves, since it's very prone to break when changing the structure, especially as alignment etc. comes into play.