diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,12 @@
 # Changelog for [`clash-prelude` package](http://hackage.haskell.org/package/clash-prelude)
 
+## 0.10.3 *October 24th 2015*
+* Disable CPR analysis (See https://github.com/clash-lang/clash-compiler/commit/721fcfa9198925661cd836668705f817bddaae3c):
+  * GHC < 7.11: In all modules using `-fcpr-off`
+  * GHC >= 7.11: In `CLaSH.Signal.Internal` and `CLaSH.Prelude.RAM` using `-fno-cpr-anal`
+
 ## 0.10.2 *October 21st 2015*
-* New features
+* New features:
   * `ExtendingNum`, `BitPack`, and `Resize` instance for `Index`
   * Add `bv2i`: convert `BitVector n` to `Index (2^n)`
   * Export type-level operations from [ghc-typelits-extra](http://hackage.haskell.org/package/ghc-typelits-extra)
diff --git a/clash-prelude.cabal b/clash-prelude.cabal
--- a/clash-prelude.cabal
+++ b/clash-prelude.cabal
@@ -1,5 +1,5 @@
 Name:                 clash-prelude
-Version:              0.10.2
+Version:              0.10.3
 Synopsis:             CAES Language for Synchronous Hardware - Prelude library
 Description:
   CλaSH (pronounced ‘clash’) is a functional hardware description language that
@@ -159,13 +159,17 @@
                       ghc-typelits-natnormalise >= 0.3,
                       lens                      >= 4.9,
                       QuickCheck                >= 2.7 && <2.9,
-                      reflection                >= 0.2,
+                      reflection                >= 2,
                       singletons                >= 1.0 && <3.0,
                       template-haskell          >= 2.9.0.0
 
-  -- Newer GHCs have -XDeriveLift
   if impl(ghc<7.11)
+    -- Newer GHCs have -XDeriveLift
     Build-depends:    th-lift                   >= 0.5.6
+    -- Newer GHCs have a -fno-cpr-anal dynflag which we can enable per module
+    -- See: https://github.com/clash-lang/clash-compiler/commit/721fcfa9198925661cd836668705f817bddaae3c
+    -- as to why we need this.
+    ghc-options:      -fcpr-off
 
   if flag(doclinks)
     CPP-Options:      -DDOCLINKS
diff --git a/src/CLaSH/Prelude/RAM.hs b/src/CLaSH/Prelude/RAM.hs
--- a/src/CLaSH/Prelude/RAM.hs
+++ b/src/CLaSH/Prelude/RAM.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                 #-}
 {-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE FlexibleContexts    #-}
 {-# LANGUAGE MagicHash           #-}
@@ -6,6 +7,12 @@
 {-# LANGUAGE TypeOperators       #-}
 
 {-# LANGUAGE Safe #-}
+
+-- See: https://github.com/clash-lang/clash-compiler/commit/721fcfa9198925661cd836668705f817bddaae3c
+-- as to why we need this.
+#if __GLASGOW_HASKELL__ > 711
+{-# OPTIONS_GHC -fno-cpr-anal #-}
+#endif
 
 {-# OPTIONS_HADDOCK show-extensions #-}
 
diff --git a/src/CLaSH/Signal/Internal.hs b/src/CLaSH/Signal/Internal.hs
--- a/src/CLaSH/Signal/Internal.hs
+++ b/src/CLaSH/Signal/Internal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE GADTs                 #-}
@@ -10,11 +11,11 @@
 
 {-# LANGUAGE Unsafe #-}
 
--- Until we have a -fcpr-off DynFlag (it currently exists only as a StaticFlag),
--- we just disable strictness analysis for this module completely. See
--- https://github.com/clash-lang/clash-compiler/commit/721fcfa9198925661cd836668705f817bddaae3c
--- for more details
-{-# OPTIONS_GHC -fno-strictness #-}
+-- See: https://github.com/clash-lang/clash-compiler/commit/721fcfa9198925661cd836668705f817bddaae3c
+-- as to why we need this.
+#if __GLASGOW_HASKELL__ > 711
+{-# OPTIONS_GHC -fno-cpr-anal #-}
+#endif
 
 {-# OPTIONS_HADDOCK show-extensions #-}
 
