Apply changes to sync with llvm upstream.
diff --git a/Android.mk b/Android.mk
index 78bb1fe..f628caa 100644
--- a/Android.mk
+++ b/Android.mk
@@ -153,7 +153,6 @@
   libLLVMTransformUtils \
   libLLVMCore \
   libLLVMSupport \
-  libLLVMSystem \
   libLLVMAnalysis
 
 LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport
@@ -174,8 +173,7 @@
     ifeq ($(TARGET_ARCH),x86)
       LOCAL_STATIC_LIBRARIES += \
         libLLVMX86Disassembler \
-        libLLVMX86AsmPrinter \
-        libLLVMX86InstPrinter
+        libLLVMX86AsmPrinter
     else
       $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
     endif
@@ -192,7 +190,7 @@
 # and reduces the size of libbcc.so by about 800k.
 # As libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2,
 # use below instead.
-LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMX86Disassembler:libLLVMX86AsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMSystem:libLLVMAnalysis
+LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMX86Disassembler:libLLVMX86AsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMAnalysis
 
 include $(LLVM_ROOT_PATH)/llvm-device-build.mk
 include $(BUILD_SHARED_LIBRARY)
@@ -230,7 +228,6 @@
   libLLVMTransformUtils \
   libLLVMCore \
   libLLVMSupport \
-  libLLVMSystem \
   libLLVMAnalysis
 
 LOCAL_LDLIBS := -ldl -lpthread
@@ -261,7 +258,6 @@
   libLLVMARMAsmPrinter \
   libLLVMX86Disassembler \
   libLLVMX86AsmPrinter \
-  libLLVMX86InstPrinter \
   libLLVMMCParser \
   $(LOCAL_STATIC_LIBRARIES)
 endif
diff --git a/lib/CodeGen/CodeEmitter.cpp b/lib/CodeGen/CodeEmitter.cpp
index 43e508d..7acedb5 100644
--- a/lib/CodeGen/CodeEmitter.cpp
+++ b/lib/CodeGen/CodeEmitter.cpp
@@ -54,7 +54,7 @@
 #include "llvm/Support/MemoryObject.h"
 #endif
 
-#include "llvm/System/Host.h"
+#include "llvm/Support/Host.h"
 
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetMachine.h"
diff --git a/lib/ExecutionEngine/ContextManager.cpp b/lib/ExecutionEngine/ContextManager.cpp
index e007fe9..4d13275 100644
--- a/lib/ExecutionEngine/ContextManager.cpp
+++ b/lib/ExecutionEngine/ContextManager.cpp
@@ -18,7 +18,7 @@
 
 #include "DebugHelper.h"
 
-#include <llvm/System/Mutex.h>
+#include <llvm/Support/Mutex.h>
 #include <llvm/Support/MutexGuard.h>
 
 #include <errno.h>
diff --git a/lib/ExecutionEngine/ContextManager.h b/lib/ExecutionEngine/ContextManager.h
index 98cddfe..f23c4a1 100644
--- a/lib/ExecutionEngine/ContextManager.h
+++ b/lib/ExecutionEngine/ContextManager.h
@@ -19,7 +19,7 @@
 
 #include <Config.h>
 
-#include <llvm/System/Mutex.h>
+#include <llvm/Support/Mutex.h>
 
 #include <unistd.h>
 #include <stddef.h>
diff --git a/lib/ExecutionEngine/SourceInfo.cpp b/lib/ExecutionEngine/SourceInfo.cpp
index e4704c7..c8126a8 100644
--- a/lib/ExecutionEngine/SourceInfo.cpp
+++ b/lib/ExecutionEngine/SourceInfo.cpp
@@ -31,6 +31,7 @@
 #include <llvm/ADT/OwningPtr.h>
 #include <llvm/ADT/StringRef.h>
 #include <llvm/Support/MemoryBuffer.h>
+#include <llvm/Support/system_error.h>
 
 #include <stddef.h>
 #include <string.h>
@@ -146,10 +147,9 @@
 
   case SourceKind::File:
     {
-      llvm::OwningPtr<llvm::MemoryBuffer> MEM(
-        llvm::MemoryBuffer::getFile(file.path));
+      llvm::OwningPtr<llvm::MemoryBuffer> MEM;
 
-      if (!MEM.get()) {
+      if (llvm::error_code ec = llvm::MemoryBuffer::getFile(file.path, MEM)) {
         LOGE("Unable to MemoryBuffer::getFile(path=%s)\n", file.path);
         return 1;
       }