On Sun, May 1, 2011 at 12:52 PM, Steven Bosscher <stevenb....@gmail.com> wrote: > Hi, > > I noticed that this field is write-only. The last use was for store > motion, which overloaded this 'loads' field with ANTIC_STORE_LIST. I > went back as far as gcc 3.3.6 but couldn't figure out what the field > is supposed to do for load motion. So this patch simply removes the > field. > > Makes Nathan's EXPR_LIST/INSN_LIST a bit easier, too :-) > > Bootstrapped&tested on x86_64-unknown-linux-gnu. OK for trunk?
Ok. Thanks, Richard. > Ciao! > Steven > > > > * gcse.c (struct ls_expr): Remove 'loads' member. > (ldst_entry): Don't initialize it. > (free_ldst_entry): Don't free it. > (print_ldst_list): Don't dump it. > (compute_ld_motion_mems): Don't allocate it. > > Index: gcse.c > =================================================================== > --- gcse.c (revision 173214) > +++ gcse.c (working copy) > @@ -360,7 +360,6 @@ struct ls_expr > struct expr * expr; /* Gcse expression reference for LM. */ > rtx pattern; /* Pattern of this mem. */ > rtx pattern_regs; /* List of registers mentioned by the mem. */ > - rtx loads; /* INSN list of loads seen. */ > rtx stores; /* INSN list of stores seen. */ > struct ls_expr * next; /* Next in the list. */ > int invalid; /* Invalid for some reason. */ > @@ -3300,7 +3299,6 @@ ldst_entry (rtx x) > ptr->expr = NULL; > ptr->pattern = x; > ptr->pattern_regs = NULL_RTX; > - ptr->loads = NULL_RTX; > ptr->stores = NULL_RTX; > ptr->reaching_reg = NULL_RTX; > ptr->invalid = 0; > @@ -3317,7 +3315,6 @@ ldst_entry (rtx x) > static void > free_ldst_entry (struct ls_expr * ptr) > { > - free_INSN_LIST_list (& ptr->loads); > free_INSN_LIST_list (& ptr->stores); > > free (ptr); > @@ -3359,13 +3356,6 @@ print_ldst_list (FILE * file) > > print_rtl (file, ptr->pattern); > > - fprintf (file, "\n Loads : "); > - > - if (ptr->loads) > - print_rtl (file, ptr->loads); > - else > - fprintf (file, "(nil)"); > - > fprintf (file, "\n Stores : "); > > if (ptr->stores) > @@ -3517,9 +3507,7 @@ compute_ld_motion_mems (void) > if (MEM_P (src) && simple_mem (src)) > { > ptr = ldst_entry (src); > - if (REG_P (dest)) > - ptr->loads = alloc_INSN_LIST (insn, ptr->loads); > - else > + if (! REG_P (dest)) > ptr->invalid = 1; > } > else >