http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59932
--- Comment #6 from Zhendong Su <su at cs dot ucdavis.edu> --- Thanks for your explanation Jakub. It's more clear now, but I still don't fully understand the difference in behavior from 4.8 to the current trunk. Is it because 4.8's support for warning undefined behaviors is weaker than 4.9's, and with that enhanced support, 4.9 sometimes gives false warnings like the one reported here?