Deleted Added
full compact
reload1.c (259563) reload1.c (260230)
1/* Reload pseudo regs into hard regs for insns that require hard regs.
2 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
4 Free Software Foundation, Inc.
5
6This file is part of GCC.
7
8GCC is free software; you can redistribute it and/or modify it under

--- 6224 unchanged lines hidden (view full) ---

6233 || rld[j].when_needed == RELOAD_FOR_OTHER_ADDRESS))
6234 {
6235 rld[i].when_needed = RELOAD_OTHER;
6236 rld[j].in = 0;
6237 reload_spill_index[j] = -1;
6238 transfer_replacements (i, j);
6239 }
6240
1/* Reload pseudo regs into hard regs for insns that require hard regs.
2 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
4 Free Software Foundation, Inc.
5
6This file is part of GCC.
7
8GCC is free software; you can redistribute it and/or modify it under

--- 6224 unchanged lines hidden (view full) ---

6233 || rld[j].when_needed == RELOAD_FOR_OTHER_ADDRESS))
6234 {
6235 rld[i].when_needed = RELOAD_OTHER;
6236 rld[j].in = 0;
6237 reload_spill_index[j] = -1;
6238 transfer_replacements (i, j);
6239 }
6240
6241 /* If this is now RELOAD_OTHER, look for any reloads that load
6242 parts of this operand and set them to RELOAD_FOR_OTHER_ADDRESS
6243 if they were for inputs, RELOAD_OTHER for outputs. Note that
6244 this test is equivalent to looking for reloads for this operand
6245 number. */
6246 /* We must take special care with RELOAD_FOR_OUTPUT_ADDRESS; it may
6247 share registers with a RELOAD_FOR_INPUT, so we can not change it
6248 to RELOAD_FOR_OTHER_ADDRESS. We should never need to, since we
6249 do not modify RELOAD_FOR_OUTPUT. */
6241 /* If this is now RELOAD_OTHER, look for any reloads that
6242 load parts of this operand and set them to
6243 RELOAD_FOR_OTHER_ADDRESS if they were for inputs,
6244 RELOAD_OTHER for outputs. Note that this test is
6245 equivalent to looking for reloads for this operand
6246 number.
6250
6247
6248 We must take special care with RELOAD_FOR_OUTPUT_ADDRESS;
6249 it may share registers with a RELOAD_FOR_INPUT, so we can
6250 not change it to RELOAD_FOR_OTHER_ADDRESS. We should
6251 never need to, since we do not modify RELOAD_FOR_OUTPUT.
6252
6253 It is possible that the RELOAD_FOR_OPERAND_ADDRESS
6254 instruction is assigned the same register as the earlier
6255 RELOAD_FOR_OTHER_ADDRESS instruction. Merging these two
6256 instructions will cause the RELOAD_FOR_OTHER_ADDRESS
6257 instruction to be deleted later on. */
6258
6251 if (rld[i].when_needed == RELOAD_OTHER)
6252 for (j = 0; j < n_reloads; j++)
6253 if (rld[j].in != 0
6254 && rld[j].when_needed != RELOAD_OTHER
6255 && rld[j].when_needed != RELOAD_FOR_OTHER_ADDRESS
6256 && rld[j].when_needed != RELOAD_FOR_OUTPUT_ADDRESS
6259 if (rld[i].when_needed == RELOAD_OTHER)
6260 for (j = 0; j < n_reloads; j++)
6261 if (rld[j].in != 0
6262 && rld[j].when_needed != RELOAD_OTHER
6263 && rld[j].when_needed != RELOAD_FOR_OTHER_ADDRESS
6264 && rld[j].when_needed != RELOAD_FOR_OUTPUT_ADDRESS
6265 && rld[j].when_needed != RELOAD_FOR_OPERAND_ADDRESS
6257 && (! conflicting_input
6258 || rld[j].when_needed == RELOAD_FOR_INPUT_ADDRESS
6259 || rld[j].when_needed == RELOAD_FOR_INPADDR_ADDRESS)
6260 && reg_overlap_mentioned_for_reload_p (rld[j].in,
6261 rld[i].in))
6262 {
6263 int k;
6264

--- 2189 unchanged lines hidden ---
6266 && (! conflicting_input
6267 || rld[j].when_needed == RELOAD_FOR_INPUT_ADDRESS
6268 || rld[j].when_needed == RELOAD_FOR_INPADDR_ADDRESS)
6269 && reg_overlap_mentioned_for_reload_p (rld[j].in,
6270 rld[i].in))
6271 {
6272 int k;
6273

--- 2189 unchanged lines hidden ---