Hi Carrot,

2011-05-06  Guozhi Wei  <car...@google.com>

        PR target/47855
        * config/arm/thumb2.md (thumb2_movsi_insn): Add length addtribute.
        (thumb2_shiftsi3_short and peephole2): Remove 3-register case.
        (thumb2_cbz): Refine length computation.
        (thumb2_cbnz): Likewise.

Not approved - yet.

The problem is the change to thumb2_movsi_insn. You are still adding in the support for the STM instruction despite the fact that Richard is still researching how this will work with unaligned addresses. Given the fact that this change is not mentioned in the ChangeLog entry, I will assume that you intended to remove it and just forgot.

I have no issues with the rest of your patch, so if you could submit an updated patch I will be happy to review it again.

One small point - when/if you do resubmit the STM part of the patch, you could make the code slightly cleaner by enclosing it in curly parentheses, thus avoiding the need to escape the double quote marks. Ie:

+  {
+  switch (which_alternative)
+    {
+    case 0:
+    case 1:
+      return "mov%?\t%0, %1";
+
+    case 2:
+      return "mvn%?\t%0, #%B1";
+
+    case 3:
+      return "movw%?\t%0, %1";
+
+    case 4:
+      if (GET_CODE (XEXP (operands[1], 0)) == POST_INC)
+       {
+         operands[1] = XEXP (XEXP (operands[1], 0), 0);
+         return "ldm%(ia%)\t%1!, {%0}";
+       }
+     /* Fall through.  */
+    case 5:
+      return "ldr%?\t%0, %1";
+
+    case 6:
+      if (GET_CODE (XEXP (operands[0], 0)) == POST_INC)
+       {
+         operands[0] = XEXP (XEXP (operands[0], 0), 0);
+         return "stm%(ia%)\t%0!, {%1}";
+       }
+      /* Fall through.  */
+    case 7:
+      return "str%?\t%1, %0";
+
+    default:
+      gcc_unreachable ();
+    }
+  }

Cheers
  Nick

Reply via email to