https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105369
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- The preprocessor can't tell if an expression has side effects. I have no idea how easy it would be (or if it's even possible) for the front end to tell that an expression was duplicated from a single macro argument.