http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56202
--- Comment #7 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2013-02-04 17:29:41 UTC --- I don't understand the check for __e. If you continue, then neither __t nor __x change, the only difference is that you sample a new __e. But __e doesn't have any effect in the value of __x, so if(__t == __x), then __x is always returned, no matter the value of __e. I maybe missing something, so take my words with suspicion.