Update LLVM for merge to 3.4.

Update config.h files.

Add RS SubtargetFeature for +long64 on ARM devices.

Adjust Android.mk for added/removed files:

+  Delinearization.cpp
-  PathNumbering.cpp
-  PathProfileInfo.cpp
-  PathProfileVerifier.cpp
-  ProfileDataLoader.cpp
-  ProfileDataLoaderPass.cpp
-  ProfileEstimatorPass.cpp
-  ProfileInfo.cpp
-  ProfileInfoLoader.cpp
-  ProfileInfoLoaderPass.cpp
-  ProfileVerifierPass.cpp

+  LiveRegUnits.cpp
-  ShrinkWrapping.cpp
+  StackMaps.cpp
-  StrongPHIElimination.cpp

+  DIEHash.cpp

+  LegacyPassManager.cpp

+  ELF.cpp

+  Unicode.cpp

-  MipsOptimizeMathLibCalls.cpp

-  MipsELFStreamer.cpp
+  MipsTargetStreamer.cpp

-  EdgeProfiling.cpp
+  DataFlowSanitizer.cpp
+  DebugIR.cpp
-  OptimalEdgeProfiling.cpp
-  PathProfiling.cpp
-  ProfilingUtils.cpp

-  BasicBlockPlacement.cpp
+  LoopRerollPass.cpp
+  PartiallyInlineLibCalls.cpp
+  SampleProfile.cpp

+  GlobalStatus.cpp

Change-Id: I17dcf0bf53a1720acd8226ae3e30d84993562a91
diff --git a/README.android b/README.android
index 3cac705..d9942ee 100644
--- a/README.android
+++ b/README.android
@@ -22,7 +22,10 @@
 * For Jellybean MR1: Synced to upstream r162314
 * For Jellybean MR2: Synced to upstream r177342
 * For Key Lime Pie: Synced to upstream r187913
+* For FUTURE: Synced to LLVM 3.4 r197944
 
+* Cherry-pick on 2014/2/13: https://llvm.org/svn/llvm-project/llvm/trunk@201362 (Contact srhines for merge questions.)
+* Recent downstreaming on 2014/2/11: Synced to r197944 (Contact srhines for merge questions.)
 * Recent downstreaming on 2013/8/8: Synced to r187913 (Contact srhines for merge questions.)
 * Recent downstreaming on 2013/6/13: Synced to r183849 (Contact srhines for merge questions.)
 * Recent downstreaming on 2013/5/3: Synced to r180947 (Contact srhines for merge questions.)
diff --git a/device/include/llvm/Config/config.h b/device/include/llvm/Config/config.h
index 9c963c8..f76132a 100644
--- a/device/include/llvm/Config/config.h
+++ b/device/include/llvm/Config/config.h
@@ -613,7 +613,7 @@
 #define LLVM_VERSION_MAJOR 3
 
 /* Minor version of the LLVM API */
-#define LLVM_VERSION_MINOR 3
+#define LLVM_VERSION_MINOR 4
 
 /* Define if the OS needs help to load dependent libraries for dlopen(). */
 /* #undef LTDL_DLOPEN_DEPLIBS */
@@ -646,13 +646,13 @@
 #define PACKAGE_NAME "LLVM"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "LLVM 3.1svn"
+#define PACKAGE_STRING "LLVM 3.4"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "llvm"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "3.1svn"
+#define PACKAGE_VERSION "3.4"
 
 /* Define as the return type of signal handlers (`int' or `void'). */
 #define RETSIGTYPE void
diff --git a/device/include/llvm/Config/llvm-config.h b/device/include/llvm/Config/llvm-config.h
index e809281..637daed 100644
--- a/device/include/llvm/Config/llvm-config.h
+++ b/device/include/llvm/Config/llvm-config.h
@@ -87,7 +87,7 @@
 #define LLVM_VERSION_MAJOR 3
 
 /* Minor version of the LLVM API */
-#define LLVM_VERSION_MINOR 3
+#define LLVM_VERSION_MINOR 4
 
 #include "llvm/Config/llvm-platform-config.h"
 
diff --git a/host/include/llvm/Config/config.h b/host/include/llvm/Config/config.h
index c889158..6e2bea5 100644
--- a/host/include/llvm/Config/config.h
+++ b/host/include/llvm/Config/config.h
@@ -646,7 +646,7 @@
 #define LLVM_VERSION_MAJOR 3
 
 /* Minor version of the LLVM API */
-#define LLVM_VERSION_MINOR 3
+#define LLVM_VERSION_MINOR 4
 
 /* Define if the OS needs help to load dependent libraries for dlopen(). */
 /* #undef LTDL_DLOPEN_DEPLIBS */
@@ -679,13 +679,13 @@
 #define PACKAGE_NAME "LLVM"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "LLVM 3.3"
+#define PACKAGE_STRING "LLVM 3.4"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "llvm"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "3.3"
+#define PACKAGE_VERSION "3.4"
 
 /* Define as the return type of signal handlers (`int' or `void'). */
 #define RETSIGTYPE void
diff --git a/host/include/llvm/Config/llvm-config.h b/host/include/llvm/Config/llvm-config.h
index 8637f41..5f3596e 100644
--- a/host/include/llvm/Config/llvm-config.h
+++ b/host/include/llvm/Config/llvm-config.h
@@ -95,7 +95,7 @@
 #define LLVM_VERSION_MAJOR 3
 
 /* Minor version of the LLVM API */
-#define LLVM_VERSION_MINOR 3
+#define LLVM_VERSION_MINOR 4
 
 #include "llvm/Config/llvm-platform-config.h"
 
diff --git a/lib/Analysis/Android.mk b/lib/Analysis/Android.mk
index 7e0bccc..86d71f0 100644
--- a/lib/Analysis/Android.mk
+++ b/lib/Analysis/Android.mk
@@ -16,6 +16,7 @@
   CodeMetrics.cpp \
   ConstantFolding.cpp \
   CostModel.cpp \
+  Delinearization.cpp \
   DependenceAnalysis.cpp \
   DomPrinter.cpp \
   DominanceFrontier.cpp \
@@ -37,17 +38,7 @@
   ModuleDebugInfoPrinter.cpp \
   NoAliasAnalysis.cpp \
   PHITransAddr.cpp \
-  PathNumbering.cpp \
-  PathProfileInfo.cpp \
-  PathProfileVerifier.cpp \
   PostDominators.cpp \
-  ProfileDataLoader.cpp \
-  ProfileDataLoaderPass.cpp \
-  ProfileEstimatorPass.cpp \
-  ProfileInfo.cpp \
-  ProfileInfoLoader.cpp \
-  ProfileInfoLoaderPass.cpp \
-  ProfileVerifierPass.cpp \
   PtrUseVisitor.cpp \
   RegionInfo.cpp \
   RegionPass.cpp \
diff --git a/lib/CodeGen/Android.mk b/lib/CodeGen/Android.mk
index 3ac7c19..be0c6e2 100644
--- a/lib/CodeGen/Android.mk
+++ b/lib/CodeGen/Android.mk
@@ -36,6 +36,7 @@
   LiveRangeCalc.cpp \
   LiveRangeEdit.cpp \
   LiveRegMatrix.cpp \
+  LiveRegUnits.cpp \
   LiveStackAnalysis.cpp \
   LiveVariables.cpp \
   LLVMTargetMachine.cpp \
@@ -90,16 +91,15 @@
   ScheduleDAGPrinter.cpp \
   ScoreboardHazardRecognizer.cpp \
   ShadowStackGC.cpp \
-  ShrinkWrapping.cpp \
   SjLjEHPrepare.cpp \
   SlotIndexes.cpp \
   Spiller.cpp \
   SpillPlacement.cpp \
   SplitKit.cpp \
   StackColoring.cpp \
+  StackMaps.cpp \
   StackProtector.cpp \
   StackSlotColoring.cpp \
-  StrongPHIElimination.cpp \
   TailDuplication.cpp \
   TargetFrameLoweringImpl.cpp \
   TargetInstrInfo.cpp \
diff --git a/lib/CodeGen/AsmPrinter/Android.mk b/lib/CodeGen/AsmPrinter/Android.mk
index d408475..b2cc47e 100644
--- a/lib/CodeGen/AsmPrinter/Android.mk
+++ b/lib/CodeGen/AsmPrinter/Android.mk
@@ -13,6 +13,7 @@
 	AsmPrinterInlineAsm.cpp	\
 	ARMException.cpp	\
 	DIE.cpp	\
+	DIEHash.cpp \
 	DwarfAccelTable.cpp \
 	DwarfCFIException.cpp \
 	DwarfCompileUnit.cpp \
@@ -40,6 +41,7 @@
 	AsmPrinterInlineAsm.cpp \
 	ARMException.cpp        \
 	DIE.cpp \
+	DIEHash.cpp \
 	DwarfAccelTable.cpp \
 	DwarfCFIException.cpp \
 	DwarfCompileUnit.cpp \
diff --git a/lib/IR/Android.mk b/lib/IR/Android.mk
index 6df36f8..b2b99e4 100644
--- a/lib/IR/Android.mk
+++ b/lib/IR/Android.mk
@@ -24,6 +24,7 @@
   LLVMContext.cpp \
   LLVMContextImpl.cpp \
   LeakDetector.cpp \
+  LegacyPassManager.cpp \
   Metadata.cpp \
   Module.cpp \
   Pass.cpp \
diff --git a/lib/MC/Android.mk b/lib/MC/Android.mk
index 6c69ca2..ed0a43f 100644
--- a/lib/MC/Android.mk
+++ b/lib/MC/Android.mk
@@ -7,6 +7,7 @@
   MCAsmInfo.cpp \
   MCAsmInfoCOFF.cpp \
   MCAsmInfoDarwin.cpp \
+  MCAsmInfoELF.cpp \
   MCAsmStreamer.cpp \
   MCAssembler.cpp \
   MCCodeEmitter.cpp \
diff --git a/lib/Object/Android.mk b/lib/Object/Android.mk
index 09dcda6..93b5434 100644
--- a/lib/Object/Android.mk
+++ b/lib/Object/Android.mk
@@ -4,6 +4,7 @@
   Archive.cpp \
   Binary.cpp \
   COFFObjectFile.cpp \
+  ELF.cpp \
   ELFObjectFile.cpp \
   Error.cpp \
   MachOObjectFile.cpp \
diff --git a/lib/Support/Android.mk b/lib/Support/Android.mk
index f07ad12..e4c1175 100644
--- a/lib/Support/Android.mk
+++ b/lib/Support/Android.mk
@@ -68,6 +68,7 @@
   ToolOutputFile.cpp \
   Triple.cpp \
   Twine.cpp \
+  Unicode.cpp \
   Valgrind.cpp \
   Watchdog.cpp \
   circular_raw_ostream.cpp \
diff --git a/lib/Target/ARM/ARM.td b/lib/Target/ARM/ARM.td
index 36e5680..b73e981 100644
--- a/lib/Target/ARM/ARM.td
+++ b/lib/Target/ARM/ARM.td
@@ -227,6 +227,12 @@
                                     FeatureAvoidPartialCPSR,
                                     FeatureT2XtPk]>;
 
+// RenderScript-specific support for 64-bit long types on all targets
+def FeatureLong64 : SubtargetFeature<"long64", "UseLong64",
+                                        "true",
+                                        "long type is forced to be 64-bit">;
+
+
 class ProcNoItin<string Name, list<SubtargetFeature> Features>
  : Processor<Name, NoItineraries, Features>;
 
diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp
index 8351c63..2d749af 100644
--- a/lib/Target/ARM/ARMSubtarget.cpp
+++ b/lib/Target/ARM/ARMSubtarget.cpp
@@ -135,6 +135,7 @@
   Thumb2DSP = false;
   UseNaClTrap = false;
   UnsafeFPMath = false;
+  UseLong64 = false;
 }
 
 void ARMSubtarget::resetSubtargetFeatures(const MachineFunction *MF) {
diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h
index 5276901..567463c 100644
--- a/lib/Target/ARM/ARMSubtarget.h
+++ b/lib/Target/ARM/ARMSubtarget.h
@@ -191,6 +191,9 @@
   /// Target machine allowed unsafe FP math (such as use of NEON fp)
   bool UnsafeFPMath;
 
+  /// Force long to be a 64-bit type (RenderScript-specific)
+  bool UseLong64;
+
   /// stackAlignment - The minimum alignment known to hold of the stack frame on
   /// entry to the function and which must be maintained by every function.
   unsigned stackAlignment;
diff --git a/lib/Target/Mips/Android.mk b/lib/Target/Mips/Android.mk
index 954b1d0..1af5985 100644
--- a/lib/Target/Mips/Android.mk
+++ b/lib/Target/Mips/Android.mk
@@ -32,7 +32,6 @@
   MipsMachineFunction.cpp \
   MipsMCInstLower.cpp \
   MipsModuleISelDAGToDAG.cpp \
-  MipsOptimizeMathLibCalls.cpp \
   MipsOs16.cpp \
   MipsRegisterInfo.cpp \
   MipsSEFrameLowering.cpp \
diff --git a/lib/Target/Mips/MCTargetDesc/Android.mk b/lib/Target/Mips/MCTargetDesc/Android.mk
index fcf58c3..a2a7d63 100644
--- a/lib/Target/Mips/MCTargetDesc/Android.mk
+++ b/lib/Target/Mips/MCTargetDesc/Android.mk
@@ -9,11 +9,11 @@
 mips_mc_desc_SRC_FILES := \
   MipsAsmBackend.cpp \
   MipsELFObjectWriter.cpp \
-  MipsELFStreamer.cpp \
   MipsMCAsmInfo.cpp \
   MipsMCCodeEmitter.cpp \
   MipsMCTargetDesc.cpp \
-  MipsReginfo.cpp
+  MipsReginfo.cpp \
+  MipsTargetStreamer.cpp
 
 # For the host
 # =====================================================
diff --git a/lib/Transforms/Instrumentation/Android.mk b/lib/Transforms/Instrumentation/Android.mk
index 7182e50..cd90933 100644
--- a/lib/Transforms/Instrumentation/Android.mk
+++ b/lib/Transforms/Instrumentation/Android.mk
@@ -3,13 +3,11 @@
 instrumentation_SRC_FILES := \
   AddressSanitizer.cpp \
   BoundsChecking.cpp \
-  EdgeProfiling.cpp \
+  DataFlowSanitizer.cpp \
+  DebugIR.cpp \
   GCOVProfiling.cpp \
   Instrumentation.cpp \
   MemorySanitizer.cpp \
-  OptimalEdgeProfiling.cpp \
-  PathProfiling.cpp \
-  ProfilingUtils.cpp \
   ThreadSanitizer.cpp
 
 # For the host
diff --git a/lib/Transforms/Scalar/Android.mk b/lib/Transforms/Scalar/Android.mk
index d2e1478..7deb605 100644
--- a/lib/Transforms/Scalar/Android.mk
+++ b/lib/Transforms/Scalar/Android.mk
@@ -2,7 +2,6 @@
 
 transforms_scalar_SRC_FILES := \
   ADCE.cpp \
-  BasicBlockPlacement.cpp \
   CodeGenPrepare.cpp \
   ConstantProp.cpp \
   CorrelatedValuePropagation.cpp \
@@ -17,16 +16,19 @@
   LoopDeletion.cpp \
   LoopIdiomRecognize.cpp \
   LoopInstSimplify.cpp \
+  LoopRerollPass.cpp \
   LoopRotation.cpp \
   LoopStrengthReduce.cpp \
   LoopUnrollPass.cpp \
   LoopUnswitch.cpp \
   LowerAtomic.cpp \
   MemCpyOptimizer.cpp \
+  PartiallyInlineLibCalls.cpp \
   Reassociate.cpp \
   Reg2Mem.cpp \
   SCCP.cpp \
   SROA.cpp \
+  SampleProfile.cpp \
   Scalar.cpp \
   ScalarReplAggregates.cpp \
   SimplifyCFGPass.cpp \
diff --git a/lib/Transforms/Utils/Android.mk b/lib/Transforms/Utils/Android.mk
index 9bf9ef3..73bb3bf 100644
--- a/lib/Transforms/Utils/Android.mk
+++ b/lib/Transforms/Utils/Android.mk
@@ -10,6 +10,7 @@
   CmpInstAnalysis.cpp \
   CodeExtractor.cpp \
   DemoteRegToStack.cpp \
+  GlobalStatus.cpp \
   InlineFunction.cpp \
   InstructionNamer.cpp \
   LCSSA.cpp \