------- 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

Reply via email to