http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55986
--- Comment #2 from David Krauss <potswa at mac dot com> 2013-01-15 04:48:47 UTC --- Passing `-O2` additionally causes it to skip a condition like `(i == 0 || i != 0)`, so it looks like a general issue with expression simplification bypassing use.