diff --git a/cbits/extra.cpp b/cbits/extra.cpp
--- a/cbits/extra.cpp
+++ b/cbits/extra.cpp
@@ -53,9 +53,9 @@
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Casting.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/CallSite.h"
-#include "llvm/Analysis/Verifier.h"
-#include "llvm/Assembly/Parser.h"
+#include "llvm/IR/CallSite.h"
+#include "llvm/IR/Verifier.h"
+#include "llvm/AsmParser/Parser.h"
 #ifdef HAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H
 # include "llvm/Support/DynamicLibrary.h"
 #else
@@ -71,8 +71,9 @@
 #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
 #include "llvm/Transforms/Instrumentation.h"
 #include "llvm/Transforms/Utils/Cloning.h"
-#include "llvm/Linker.h"
+#include "llvm/Linker/Linker.h"
 #include "llvm/Support/SourceMgr.h"
+#include "llvm/Support/raw_ostream.h"
 
 // LLVM-C includes
 #include "llvm-c/Core.h"
@@ -119,6 +120,7 @@
     return strdup(buf.str().c_str());
 }
 
+#if HS_LLVM_VERSION < 305
 unsigned LLVMModuleGetPointerSize(LLVMModuleRef module)
 {
     llvm::Module *modulep = llvm::unwrap(module);
@@ -131,6 +133,7 @@
         return 64;
     return 0;
 }
+#endif
 
 LLVMValueRef LLVMModuleGetOrInsertFunction(LLVMModuleRef module,
     const char *name, LLVMTypeRef function_type)
@@ -388,6 +391,7 @@
     return wrap(modulep);
 }
 
+#if HS_LLVM_VERSION < 305
 LLVMModuleRef LLVMGetModuleFromBitcode(const char *bitcode, unsigned bclen,
     char **out)
 {
@@ -409,6 +413,7 @@
     delete mbp;
     return wrap(modulep);
 }
+#endif
 
 unsigned LLVMLinkModules(LLVMModuleRef dest, LLVMModuleRef src, unsigned mode,
 			 char **out)
@@ -461,7 +466,7 @@
 }
 
 /* Return 0 on failure (with errmsg filled in), 1 on success. */
-unsigned LLVMLoadLibraryPermanently(const char* filename, char **errmsg)
+unsigned LLVMLoadLibraryPermanentlyError(const char* filename, char **errmsg)
 {
     assert(filename);
     assert(errmsg);
@@ -516,7 +521,6 @@
 define_pass( AlwaysInliner )
 define_pass( BasicAliasAnalysis )
 define_pass( BreakCriticalEdges )
-define_pass( CodeGenPrepare )
 define_pass( DeadCodeElimination )
 define_pass( DeadInstElimination )
 define_pass( DemoteRegisterToMemory )
diff --git a/include/extra.h b/include/extra.h
--- a/include/extra.h
+++ b/include/extra.h
@@ -180,7 +180,7 @@
 /* Wraps llvm::sys::DynamicLibrary::LoadLibraryPermanently(). Returns 0 on
  * failure (with errmsg filled in) and 1 on success. Dispose error message after
  * use, via LLVMDisposeMessage(). */
-unsigned LLVMLoadLibraryPermanently(const char* filename, char **errmsg);
+unsigned LLVMLoadLibraryPermanentlyError(const char* filename, char **errmsg);
 
 /* Wraps llvm::ExecutionEngine::getPointerToFunction(). Returns a pointer
  * to the JITted function. */
diff --git a/llvm-ffi.cabal b/llvm-ffi.cabal
--- a/llvm-ffi.cabal
+++ b/llvm-ffi.cabal
@@ -1,5 +1,5 @@
 Name:          llvm-ffi
-Version:       3.4.0
+Version:       3.5.0
 License:       BSD3
 License-File:  LICENSE
 Synopsis:      FFI bindings to the LLVM compiler toolkit.
@@ -15,7 +15,7 @@
   using the @llvm-pkg-config@ package.
   .
   We try to stay up to date with LLVM releases.
-  The current version of this package is compatible with LLVM 3.4.
+  The current version of this package is compatible with LLVM 3.5.
   Please understand that the package may or may not work
   against older LLVM releases.
   We don't have the time or resources to test across multiple releases.
@@ -44,7 +44,7 @@
   Default: False
 
 Flag specificPkgConfig
-  Description: use llvm-3.4.pc instead of llvm.pc
+  Description: use llvm-3.5.pc instead of llvm.pc
   Default: True
 
 Source-Repository head
@@ -52,7 +52,7 @@
   Location: http://hub.darcs.net/thielema/llvm-ffi/
 
 Source-Repository this
-  Tag:      3.4.0
+  Tag:      3.5.0
   Type:     darcs
   Location: http://hub.darcs.net/thielema/llvm-ffi/
 
@@ -91,11 +91,11 @@
       LLVM.Target.XCore
 
   If flag(specificPkgConfig)
-    PkgConfig-Depends: llvm-3.4 == 3.4
+    PkgConfig-Depends: llvm-3.5 == 3.5
   Else
-    PkgConfig-Depends: llvm == 3.4
-  CC-Options: -DHS_LLVM_VERSION=304 -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1
-  CPP-Options: -DHS_LLVM_VERSION=304
+    PkgConfig-Depends: llvm == 3.5
+  CC-Options: -DHS_LLVM_VERSION=305 -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1
+  CPP-Options: -DHS_LLVM_VERSION=305
   CPP-Options: -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
   Include-Dirs: include
   C-Sources:
