Index: lib/Target/ARM/ARM.td
===================================================================
--- lib/Target/ARM/ARM.td
+++ lib/Target/ARM/ARM.td
@@ -188,6 +188,10 @@
                                      "Don't use movt/movw pairs for 32-bit "
                                      "imms">;
 
+def FeatureLong64 : SubtargetFeature<"long64", "UseLong64",
+                                     "true",
+                                     "long type is forced to be 64-bit">;
+
 
 //===----------------------------------------------------------------------===//
 // ARM ISAa.
Index: lib/Target/ARM/ARMSubtarget.h
===================================================================
--- lib/Target/ARM/ARMSubtarget.h
+++ lib/Target/ARM/ARMSubtarget.h
@@ -237,6 +237,9 @@
   /// Target machine allowed unsafe FP math (such as use of NEON fp)
   bool UnsafeFPMath;
 
+  /// Force long to be 64-bit type
+  bool UseLong64;
+
   /// UseSjLjEH - If true, the target uses SjLj exception handling (e.g. iOS).
   bool UseSjLjEH;
 
Index: lib/Target/ARM/ARMSubtarget.cpp
===================================================================
--- lib/Target/ARM/ARMSubtarget.cpp
+++ lib/Target/ARM/ARMSubtarget.cpp
@@ -157,6 +157,7 @@
   UseNaClTrap = false;
   GenLongCalls = false;
   UnsafeFPMath = false;
+  UseLong64 = false;
   HasV7Clrex = false;
   HasAcquireRelease = false;