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