------- Comment #22 from rguenth at gcc dot gnu dot org 2007-08-31 13:56 ------- We are clearly missing the use of signInfo.d by the call, thus we should from the bitmap of clobbered parts of signInfo remove the used parts once we encounter the call. But somehow we never remove bits from this bitmap and I have no clue how this should work with other intermediate uses, but it somehow does. And indeed, it also happily removes the whole-aggregate store for
s signInfo = { sizeof(signInfo), 0 }; signInfo.b = 1; signInfo.c = 0; h(signInfo.d); signInfo.d = 1; if you disable other optimizations before DSE. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30375