diff --git a/cbits/extra.cpp b/cbits/extra.cpp
--- a/cbits/extra.cpp
+++ b/cbits/extra.cpp
@@ -341,12 +341,12 @@
     return fnp->doesNotThrow();
 }
 
-void LLVMSetDoesNotThrow(LLVMValueRef fn, int DoesNotThrow)
+void LLVMSetDoesNotThrow(LLVMValueRef fn)
 {
     llvm::Function *fnp = llvm::unwrap<llvm::Function>(fn);
     assert(fnp);
 
-    return fnp->setDoesNotThrow((bool)DoesNotThrow);
+    return fnp->setDoesNotThrow();
 }
 
 LLVMValueRef LLVMGetIntrinsic(LLVMModuleRef module, int id,
@@ -539,7 +539,6 @@
 define_pass( InstructionNamer )
 define_pass( LazyValueInfo )
 define_pass( LCSSA )
-define_pass( LoopDependenceAnalysis )
 define_pass( LoopExtractor )
 define_pass( LoopSimplify )
 define_pass( LoopStrengthReduce )
@@ -563,6 +562,8 @@
 define_pass( UnifyFunctionExitNodes )
 
 /* we support only internalize(true) */
-llvm::ModulePass *createInternalize2Pass() { return llvm::createInternalizePass(true); }
+llvm::ModulePass *createInternalize2Pass() {
+  return llvm::createInternalizePass();
+}
 define_pass( Internalize2 )
 
diff --git a/cbits/support.cpp b/cbits/support.cpp
--- a/cbits/support.cpp
+++ b/cbits/support.cpp
@@ -28,7 +28,7 @@
 
   llvm::PassManagerBase *pass_man = unwrap(PM);
   llvm::FunctionPassManager *func_man =
-    dynamic_cast <FunctionPassManager*>(pass_man);
+    static_cast <FunctionPassManager*>(pass_man);
 
   if (func_man) {
     Builder.populateFunctionPassManager (*func_man);
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.1.0
+Version:       3.2.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.1.
+  The current version of this package is compatible with LLVM 3.2.
   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.
@@ -24,7 +24,7 @@
 Homepage:      http://haskell.org/haskellwiki/LLVM
 Stability:     experimental
 Category:      Compilers/Interpreters, Code Generation
-Tested-With:   GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.1
+Tested-With:   GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==8.0.1
 Cabal-Version: >= 1.6
 Build-Type:    Simple
 
@@ -44,7 +44,7 @@
   Default: False
 
 Flag specificPkgConfig
-  Description: use llvm-3.1.pc instead of llvm.pc
+  Description: use llvm-3.2.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.1.0
+  Tag:      3.2.0
   Type:     darcs
   Location: http://hub.darcs.net/thielema/llvm-ffi/
 
@@ -85,17 +85,18 @@
       LLVM.Target.Hexagon
       LLVM.Target.MSP430
       LLVM.Target.Mips
+      LLVM.Target.NVPTX
       LLVM.Target.PowerPC
       LLVM.Target.Sparc
       LLVM.Target.X86
       LLVM.Target.XCore
 
   If flag(specificPkgConfig)
-    PkgConfig-Depends: llvm-3.1 == 3.1
+    PkgConfig-Depends: llvm-3.2 == 3.2
   Else
-    PkgConfig-Depends: llvm == 3.1
-  CC-Options: -DHS_LLVM_VERSION=301 -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1
-  CPP-Options: -DHS_LLVM_VERSION=301
+    PkgConfig-Depends: llvm == 3.2
+  CC-Options: -DHS_LLVM_VERSION=302 -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1
+  CPP-Options: -DHS_LLVM_VERSION=302
   CPP-Options: -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
   Include-Dirs: include
   C-Sources:
diff --git a/src/LLVM/Target/NVPTX.hs b/src/LLVM/Target/NVPTX.hs
new file mode 100644
--- /dev/null
+++ b/src/LLVM/Target/NVPTX.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE Safe #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+module LLVM.Target.NVPTX(initializeTarget) where
+
+initializeTarget :: IO ()
+initializeTarget = do
+    initializeNVPTXTargetInfo
+    initializeNVPTXTarget
+
+foreign import ccall unsafe "LLVMInitializeNVPTXTargetInfo" initializeNVPTXTargetInfo :: IO ()
+foreign import ccall unsafe "LLVMInitializeNVPTXTarget" initializeNVPTXTarget :: IO ()
