mips.c (mips_process_sync_loop): Emit cmp result only if it is used.
authorMaxim Kuvyrkov <maxim@codesourcery.com>
Wed, 20 Jun 2012 01:01:00 +0000 (01:01 +0000)
committerMaxim Kuvyrkov <mkuvyrkov@gcc.gnu.org>
Wed, 20 Jun 2012 01:01:00 +0000 (01:01 +0000)
2012-06-19  Maxim Kuvyrkov  <maxim@codesourcery.com>

* config/mips/mips.c (mips_process_sync_loop): Emit cmp result only if
it is used.

From-SVN: r188805

gcc/ChangeLog
gcc/config/mips/mips.c

index 0b679ae5d8ba67dc3b44ddd36d1a209cf1248aff..e1a1d0048d9ec9ae01ebe2d5d99ad3c07a7823bf 100644 (file)
@@ -1,3 +1,8 @@
+2012-06-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+       * config/mips/mips.c (mips_process_sync_loop): Emit cmp result only if
+       it is used.
+
 2012-06-19  Tom de Vries  <vries@codesourcery.com>
             Maxim Kuvyrkov  <maxim@codesourcery.com>
 
index 64b486d1d0b683f0644d835b84a51818cb8940cd..3bbb3ea19f153285043f55424fb4702d65a176cd 100644 (file)
@@ -12073,6 +12073,10 @@ mips_process_sync_loop (rtx insn, rtx *operands)
   insn1 = get_attr_sync_insn1 (insn);
   insn2 = get_attr_sync_insn2 (insn);
 
+  /* Don't bother setting CMP result that is never used.  */
+  if (cmp && find_reg_note (insn, REG_UNUSED, cmp))
+    cmp = 0;
+
   memmodel_attr = get_attr_sync_memmodel (insn);
   switch (memmodel_attr)
     {