When in ARM mode, LDRH/STRH require special handling of negative offsets.
For correctness, disable this for now.
rdar://10418009

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144316 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/ARM/ARMFastISel.cpp b/lib/Target/ARM/ARMFastISel.cpp
index 4c47ff9..6b2c1f3 100644
--- a/lib/Target/ARM/ARMFastISel.cpp
+++ b/lib/Target/ARM/ARMFastISel.cpp
@@ -852,7 +852,8 @@
         needsLowering = ((Addr.Offset & 0xfff) != Addr.Offset);
       else
         // ARM i16 integer loads/stores handle +/-imm8 offsets.
-        if (Addr.Offset > 255 || Addr.Offset < -255)
+        // FIXME: Negative offsets require special handling.
+        if (Addr.Offset > 255 || Addr.Offset < 0)
           needsLowering = true;
       break;
     case MVT::i1: