------- Comment #5 from rguenth at gcc dot gnu dot org 2007-11-19 17:38 ------- With just a forwprop pass after inlining and before salias we miscompile cp/semantics.c:pop_to_parent_deferring_access_checks() at -O2. An optimization barrier like
pop_to_parent_deferring_access_checks (void) { if (deferred_access_no_check) deferred_access_no_check--; else { VEC (deferred_access_check,gc) *checks; deferred_access *ptr; checks = (VEC_last (deferred_access, deferred_access_stack) ->deferred_access_checks); VEC_pop (deferred_access, deferred_access_stack); __asm__ __volatile__ ("" : : : "memory"); ptr = VEC_last (deferred_access, deferred_access_stack); fixes it. Reducing max-aliased-vops to 100 (as with -O1 which also passes) fixes the problem as well. -O1 -fstrict-aliasing --param max-aliased-vops=500 (as with -O2) also breaks. Disabling DOM makes it work again. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34148