diff options
author | Michael Meissner <meissner@gcc.gnu.org> | 1992-03-30 23:22:55 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1992-03-30 23:22:55 +0000 |
commit | 4e09f580c0d716163936a63de594ca5d80cdfffb (patch) | |
tree | f9f9e70502e29d1bbe24f696707d9f66deb94a38 /gcc | |
parent | 58e54c449bcd843cde0e989ef386283e708a88c9 (diff) | |
download | gcc-4e09f580c0d716163936a63de594ca5d80cdfffb.zip gcc-4e09f580c0d716163936a63de594ca5d80cdfffb.tar.gz gcc-4e09f580c0d716163936a63de594ca5d80cdfffb.tar.bz2 |
*** empty log message ***
From-SVN: r640
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/mips/mips.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index a4f1172..068abf1 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -1997,6 +1997,9 @@ output_block_move (insn, operands, num_regs) { if (CONSTANT_P (src_reg)) { + if (TARGET_STATS) + mips_count_memory_refs (operands[1], 1); + xoperands[1] = operands[1]; xoperands[0] = src_reg = operands[ 3 + num_regs-- ]; output_asm_insn ("la\t%0,%1", xoperands); @@ -2004,7 +2007,10 @@ output_block_move (insn, operands, num_regs) if (CONSTANT_P (dest_reg)) { - xoperands[1] = operands[1]; + if (TARGET_STATS) + mips_count_memory_refs (operands[0], 1); + + xoperands[1] = operands[0]; xoperands[0] = dest_reg = operands[ 3 + num_regs-- ]; output_asm_insn ("la\t%0,%1", xoperands); } @@ -2023,6 +2029,8 @@ output_block_move (insn, operands, num_regs) { load_store[num].offset = offset; + dslots_load_total++; + dslots_load_filled++; if (bytes >= UNITS_PER_WORD && align >= UNITS_PER_WORD) { load_store[num].load = "lw\t%0,%1"; @@ -2064,14 +2072,26 @@ output_block_move (insn, operands, num_regs) bytes--; } + if (TARGET_STATS) + { + if (CONSTANT_P (src_reg)) + mips_count_memory_refs (src_reg, 1); + + if (CONSTANT_P (dest_reg)) + mips_count_memory_refs (dest_reg, 1); + } + /* Emit load/stores now if we have run out of registers or are at the end of the move. */ - if (++num == 4 || bytes == 0) + if (++num == num_regs || bytes == 0) { /* If only load/store, we need a NOP after the load. */ if (num == 1) - load_store[0].load = load_store[0].load_nop; + { + load_store[0].load = load_store[0].load_nop; + dslots_load_filled--; + } for (i = 0; i < num; i++) { |