diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 9.0.1 (2019-09-28)
+
+* Fix build with Clang on MacOS.
+* Expose `LLVMOffsetOfElement` as `getOffsetOfElement`.
+
 ## 9.0.0 (2019-09-06)
 
 * Support GHC 8.8
diff --git a/llvm-hs.cabal b/llvm-hs.cabal
--- a/llvm-hs.cabal
+++ b/llvm-hs.cabal
@@ -1,5 +1,5 @@
 name: llvm-hs
-version: 9.0.0
+version: 9.0.1
 license: BSD3
 license-file: LICENSE
 author: Anthony Cowley, Stephen Diehl, Moritz Kiefer <moritz.kiefer@purelyfunctional.org>, Benjamin S. Scarlet
diff --git a/src/LLVM/Internal/FFI/DataLayout.hs b/src/LLVM/Internal/FFI/DataLayout.hs
--- a/src/LLVM/Internal/FFI/DataLayout.hs
+++ b/src/LLVM/Internal/FFI/DataLayout.hs
@@ -6,7 +6,7 @@
 
 import LLVM.Prelude
 
-import Foreign.C.String
+import Foreign.C
 import Foreign.Ptr
 
 import LLVM.Internal.FFI.LLVMCTypes
@@ -28,3 +28,6 @@
 
 foreign import ccall unsafe "LLVMABISizeOfType" getTypeAllocSize ::
   Ptr DataLayout -> Ptr Type -> IO Word64
+
+foreign import ccall unsafe "LLVMOffsetOfElement" getOffsetOfElement ::
+  Ptr DataLayout -> Ptr Type -> CUInt -> IO Word64
diff --git a/src/LLVM/Internal/FFI/PassManagerC.cpp b/src/LLVM/Internal/FFI/PassManagerC.cpp
--- a/src/LLVM/Internal/FFI/PassManagerC.cpp
+++ b/src/LLVM/Internal/FFI/PassManagerC.cpp
@@ -31,11 +31,11 @@
 }
 
 namespace llvm {
-inline TargetLowering *unwrap(LLVMTargetLoweringRef P) { 
+inline TargetLowering *unwrap(LLVMTargetLoweringRef P) {
 	return reinterpret_cast<TargetLowering *>(P);
 }
 
-inline LLVMTargetLoweringRef wrap(const TargetLowering *P) { 
+inline LLVMTargetLoweringRef wrap(const TargetLowering *P) {
 	return reinterpret_cast<LLVMTargetLoweringRef>(const_cast<TargetLowering *>(P));
 }
 
@@ -86,7 +86,7 @@
 void LLVM_Hs_AddCodeGenPreparePass(LLVMPassManagerRef PM) {
 	unwrap(PM)->add(createCodeGenPreparePass());
 }
-	
+
 void LLVM_Hs_AddGlobalValueNumberingPass(LLVMPassManagerRef PM, LLVMBool noLoads) {
 	unwrap(PM)->add(createGVNPass(noLoads));
 }
@@ -114,7 +114,7 @@
 void LLVM_Hs_AddLowerInvokePass(LLVMPassManagerRef PM) {
 	unwrap(PM)->add(createLowerInvokePass());
 }
-	
+
 void LLVM_Hs_AddSROAPass(LLVMPassManagerRef PM) {
 	unwrap(PM)->add(createSROAPass());
 }
@@ -156,7 +156,7 @@
     LLVMBool recover,
     LLVMBool kernel
 ) {
-	unwrap(PM)->add(createMemorySanitizerLegacyPassPass({trackOrigins, recover, kernel}));
+	unwrap(PM)->add(createMemorySanitizerLegacyPassPass({trackOrigins, static_cast<bool>(recover), static_cast<bool>(kernel)}));
 }
 
 void LLVM_Hs_AddThreadSanitizerPass(
