Deadly optimization bug (all gcc versions!)

Jeffrey A Law law@cygnus.com
Mon Aug 30 01:47:00 GMT 1999


  In message < 4.2.0.58.19990830094306.047fd8c0@mail.lauterbach.com >you write:
  > At 16:14 24.08.99 , Bernd Schmidt wrote:
  > >+      /* We can't do anything if the value is set in between the insns we
  >  are
  > >+       processing.  */
  > >+      if (INSN_CUID (reg_last_set[regno]) <= INSN_CUID (subst_insn))
  > >+       return 0;
  > >+
  > 
  > Just for my understanding, reg_last_set[regno] will not point past 
  > subst_insn here? What I'm thinking about is, what happens if we have 3 SETs
  >  
  > like:
  > 
  > SET1
  > start_of_subst_tree
  > ...
  > SET2
  > ...
  > subst_insn
  > ...
  > SET3
  > 
  > Will reg_last_set[] point to SET2 or SET3? If it points to SET3, your patch
  > doesn't cover all possibilities, or?
I don't think reg_last_set can point to set3 since we haven't processed
anything beyond subst_insn yet.

It can point to SET2, which is the case Bernd's patch is dealing with.

jeff



More information about the Gcc mailing list