diff --git a/cbits/extra.cpp b/cbits/extra.cpp
--- a/cbits/extra.cpp
+++ b/cbits/extra.cpp
@@ -387,7 +387,7 @@
                                               llvm::getGlobalContext()))) {
         std::string s;
         llvm::raw_string_ostream buf(s);
-        error.Print("llvm-py", buf);
+        // error.Print("llvm-py", buf);
         *out = strdup(buf.str().c_str());
         return NULL;
     }
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.0.0.2
+Version:       3.1.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.0.
+  The current version of this package is compatible with LLVM 3.1.
   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.0.pc instead of llvm.pc
+  Description: use llvm-3.1.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.0.0.2
+  Tag:      3.1.0
   Type:     darcs
   Location: http://hub.darcs.net/thielema/llvm-ffi/
 
@@ -80,25 +80,22 @@
 
   Other-modules:
       LLVM.Target.ARM
-      LLVM.Target.Alpha
-      LLVM.Target.Blackfin
-      LLVM.Target.CBackend
       LLVM.Target.CellSPU
       LLVM.Target.CppBackend
+      LLVM.Target.Hexagon
       LLVM.Target.MSP430
       LLVM.Target.Mips
       LLVM.Target.PowerPC
       LLVM.Target.Sparc
-      LLVM.Target.SystemZ
       LLVM.Target.X86
       LLVM.Target.XCore
 
   If flag(specificPkgConfig)
-    PkgConfig-Depends: llvm-3.0 == 3.0
+    PkgConfig-Depends: llvm-3.1 == 3.1
   Else
-    PkgConfig-Depends: llvm == 3.0
-  CC-Options: -DHS_LLVM_VERSION=300 -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1
-  CPP-Options: -DHS_LLVM_VERSION=300
+    PkgConfig-Depends: llvm == 3.1
+  CC-Options: -DHS_LLVM_VERSION=301 -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1
+  CPP-Options: -DHS_LLVM_VERSION=301
   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/Alpha.hs b/src/LLVM/Target/Alpha.hs
deleted file mode 100644
--- a/src/LLVM/Target/Alpha.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-{-# LANGUAGE Safe #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-module LLVM.Target.Alpha(initializeTarget) where
-
-initializeTarget :: IO ()
-initializeTarget = do
-    initializeAlphaTargetInfo
-    initializeAlphaTarget
-
-foreign import ccall unsafe "LLVMInitializeAlphaTargetInfo" initializeAlphaTargetInfo :: IO ()
-foreign import ccall unsafe "LLVMInitializeAlphaTarget" initializeAlphaTarget :: IO ()
diff --git a/src/LLVM/Target/Blackfin.hs b/src/LLVM/Target/Blackfin.hs
deleted file mode 100644
--- a/src/LLVM/Target/Blackfin.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-{-# LANGUAGE Safe #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-module LLVM.Target.Blackfin(initializeTarget) where
-
-initializeTarget :: IO ()
-initializeTarget = do
-    initializeBlackfinTargetInfo
-    initializeBlackfinTarget
-
-foreign import ccall unsafe "LLVMInitializeBlackfinTargetInfo" initializeBlackfinTargetInfo :: IO ()
-foreign import ccall unsafe "LLVMInitializeBlackfinTarget" initializeBlackfinTarget :: IO ()
diff --git a/src/LLVM/Target/CBackend.hs b/src/LLVM/Target/CBackend.hs
deleted file mode 100644
--- a/src/LLVM/Target/CBackend.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-{-# LANGUAGE Safe #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-module LLVM.Target.CBackend(initializeTarget) where
-
-initializeTarget :: IO ()
-initializeTarget = do
-    initializeCBackendTargetInfo
-    initializeCBackendTarget
-
-foreign import ccall unsafe "LLVMInitializeCBackendTargetInfo" initializeCBackendTargetInfo :: IO ()
-foreign import ccall unsafe "LLVMInitializeCBackendTarget" initializeCBackendTarget :: IO ()
diff --git a/src/LLVM/Target/Hexagon.hs b/src/LLVM/Target/Hexagon.hs
new file mode 100644
--- /dev/null
+++ b/src/LLVM/Target/Hexagon.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE Safe #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+module LLVM.Target.Hexagon(initializeTarget) where
+
+initializeTarget :: IO ()
+initializeTarget = do
+    initializeHexagonTargetInfo
+    initializeHexagonTarget
+
+foreign import ccall unsafe "LLVMInitializeHexagonTargetInfo" initializeHexagonTargetInfo :: IO ()
+foreign import ccall unsafe "LLVMInitializeHexagonTarget" initializeHexagonTarget :: IO ()
diff --git a/src/LLVM/Target/SystemZ.hs b/src/LLVM/Target/SystemZ.hs
deleted file mode 100644
--- a/src/LLVM/Target/SystemZ.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-{-# LANGUAGE Safe #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-module LLVM.Target.SystemZ(initializeTarget) where
-
-initializeTarget :: IO ()
-initializeTarget = do
-    initializeSystemZTargetInfo
-    initializeSystemZTarget
-
-foreign import ccall unsafe "LLVMInitializeSystemZTargetInfo" initializeSystemZTargetInfo :: IO ()
-foreign import ccall unsafe "LLVMInitializeSystemZTarget" initializeSystemZTarget :: IO ()
