backend/src/llvm/llvm_unroll.cpp:209:22: error: no member named 'markAsRemoved' in 'llvm::LoopInfo'
            loopInfo.markAsRemoved(parentL);
            ~~~~~~~~ ^
backend/src/llvm/llvm_to_gen.cpp:325:43: error: reference to type 'std::unique_ptr<DiagnosticHandler>' could not bind to an rvalue of type 'void (*)(const llvm::DiagnosticInfo &, void *)'
    mod.getContext().setDiagnosticHandler(&gbeDiagnosticHandler,&dc);
                                          ^~~~~~~~~~~~~~~~~~~~~
/usr/local/llvm60/include/llvm/IR/LLVMContext.h:213:66: note: passing argument to parameter 'DH' here
  void setDiagnosticHandler(std::unique_ptr<DiagnosticHandler> &&DH,
                                                                 ^

--- backend/src/llvm/llvm_to_gen.cpp.orig	2017-10-24 06:04:48 UTC
+++ backend/src/llvm/llvm_to_gen.cpp
@@ -322,7 +322,11 @@ namespace gbe
     DataLayout DL(&mod);
     
     gbeDiagnosticContext dc;
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 60
+    mod.getContext().setDiagnosticHandlerCallBack(&gbeDiagnosticHandler,&dc);
+#else
     mod.getContext().setDiagnosticHandler(&gbeDiagnosticHandler,&dc);
+#endif
 
 #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37
     mod.setDataLayout(DL);
--- backend/src/llvm/llvm_unroll.cpp.orig	2017-10-24 06:04:48 UTC
+++ backend/src/llvm/llvm_unroll.cpp
@@ -205,7 +205,9 @@ namespace gbe {
           if (parentTripCount != 0 && currTripCount * parentTripCount > 32) {
             //Don't change the unrollID if doesn't force unroll.
             //setUnrollID(parentL, false);
-#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 60
+            loopInfo.erase(parentL);
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38
             loopInfo.markAsRemoved(parentL);
 #else
             LPM.deleteLoopFromQueue(parentL);
