https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70018
--- Comment #6 from Sanjoy Das <sanjoy at playingwithpointers dot com> --- (In reply to Andrew Pinski from comment #5) > Oh I see pure/const behavior. > > The problem is more complex, in that in one TU, the comdat function is > figured out to be pure/const so we remove the store before the function > call. While in the other we don't. Now we got a comdat function which is > pure in one TU while not in the other case. We use the non pure version of > the comdat function. > > I thought this was fixed in 6. Ah, okay. I'm testing with 5.3. If this is fixed in gcc 6, please feel free to close.