problem with flow and caller_save

Jeffrey A Law law@cygnus.com
Wed Oct 28 10:25:00 GMT 1998


  In message < 199810280658.GAA00722@htbrug.net.HCC.nl >you write:
  > (insn 10 7 13 (set (subreg:QI (reg/v:HI 37) 0)
  >         (mem/u:QI (symbol_ref/u:QI ("*LC4")) 0)) 5 {movqi_noclobber} (nil)
  >     (nil))
  > 
  > (insn 13 10 16 (set (subreg:QI (reg/v:HI 37) 1)
  >         (const_int 21845)) 5 {movqi_noclobber} (insn_list 10 (nil))
  >     (nil))
  > 
  > This will call __main and load pseudo_reg 37 (long long) with a value.
  > The flowanalyses will now mark reg 37 as a caller_save reg in
  > propagate_block at line 1886 (REG_N_CALLS_CROSSED (i)++;). This is
  > because it does not detect correctly that reg 37 becomes life after the call
  > to __main.
  > Now global alloc assigns a caller save register (r0,r1) to reg 37. The code
  > now looks like:
Emit a clobber of reg37 before insn 10.

jeff



More information about the Gcc-bugs mailing list