diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
 # Changelog for the Clash project
 
+## 1.4.6 *Oct 26th 2021*
+
+Fixed:
+
+  * Clash tries to cast-specialize non-"global binders" resulting in "specialisation of non-work-free cast" warning [#1933](https://github.com/clash-lang/clash-compiler/issues/1945)
+  * More consistently render bare untyped and unsized literals for `~LIT` tags. This fixes [#1934](https://github.com/clash-lang/clash-compiler/issues/1934)
+
 ## 1.4.5 *Oct 13th 2021*
 
 Changed:
diff --git a/clash-lib.cabal b/clash-lib.cabal
--- a/clash-lib.cabal
+++ b/clash-lib.cabal
@@ -1,6 +1,6 @@
 Cabal-version:        2.2
 Name:                 clash-lib
-Version:              1.4.5
+Version:              1.4.6
 Synopsis:             Clash: a functional hardware description language - As a library
 Description:
   Clash is a functional hardware description language that borrows both its
@@ -144,7 +144,7 @@
                       base16-bytestring       >= 0.1.1    && < 1.1,
                       binary                  >= 0.8.5    && < 0.11,
                       bytestring              >= 0.10.0.2 && < 0.12,
-                      clash-prelude           == 1.4.5,
+                      clash-prelude           == 1.4.6,
                       concurrent-supply       >= 0.1.7    && < 0.2,
                       containers              >= 0.5.0.0  && < 0.7,
                       cryptohash-sha256       >= 0.11     && < 0.12,
diff --git a/src/Clash/Netlist/BlackBox/Util.hs b/src/Clash/Netlist/BlackBox/Util.hs
--- a/src/Clash/Netlist/BlackBox/Util.hs
+++ b/src/Clash/Netlist/BlackBox/Util.hs
@@ -606,10 +606,24 @@
  where
   (e,_,_) = bbInputs b !! n
 
-  mkLit (Literal (Just (Signed _,_)) i)                                 = Literal Nothing i
-  mkLit (Literal (Just (Unsigned _,_)) i)                               = Literal Nothing i
-  mkLit (DataCon _ (DC (Void {}, _)) [Literal (Just (Signed _,_)) i])   = Literal Nothing i
-  mkLit (DataCon _ (DC (Void {}, _)) [Literal (Just (Unsigned _,_)) i]) = Literal Nothing i
+  mkLit (Literal (Just (Signed _,_)) i)                                 = Literal Nothing i  -- Integer, Int#
+  mkLit (Literal (Just (Unsigned _,_)) i)                               = Literal Nothing i  -- KnownNat, Natural, Word#
+
+  -- TODO Remove the blackboxes for GHC.Types.I# and GHC.Types.W#.
+  -- Then we can use these two rules for Int and Word
+  -- mkLit (DataCon _ (DC (Void {}, _)) [Literal (Just (Signed _,_)) i])   = Literal Nothing i
+  mkLit (DataCon _ (DC (Void {}, _)) [Literal (Just (Unsigned _,_)) i]) = Literal Nothing i  -- SNat
+
+  mkLit (BlackBoxE pNm _ _ _ _ bbCtx _) | pNm `elem` ["GHC.Types.I#","GHC.Int.I8#", "GHC.Int.I16#", "GHC.Int.I32#", "GHC.Int.I64#"
+                                                     ,"GHC.Types.W#","GHC.Word.W8#","GHC.Word.W16#","GHC.Word.W32#","GHC.Word.W64#"
+                                                     ]
+                                        , [Literal _ i] <- extractLiterals bbCtx
+                                        = Literal Nothing i
+  mkLit (BlackBoxE pNm _ _ _ _ bbCtx _) | pNm `elem` ["Clash.Sized.Internal.Signed.fromInteger#"
+                                                     ,"Clash.Sized.Internal.Unsigned.fromInteger#"
+                                                     ,"Clash.Sized.Internal.Index.fromInteger#"]
+                                        , [Literal {}, Literal _ i] <- extractLiterals bbCtx
+                                         = Literal Nothing i
   mkLit i                                                               = i
 
 renderTag b e@(Name _i) =
diff --git a/src/Clash/Normalize/Transformations.hs b/src/Clash/Normalize/Transformations.hs
--- a/src/Clash/Normalize/Transformations.hs
+++ b/src/Clash/Normalize/Transformations.hs
@@ -1056,9 +1056,10 @@
  -- will be eliminated by 'eliminateCastCast' during the normalization of the
  -- "current" function. We thus prevent the unnecessary introduction of a
  -- specialized version of 'f'.
- | not (isCast e)
- -- Don't specialise prims, because we can't push casts into them
- , not . isPrim . fst . collectArgs $ f = do
+ | not (isCast e')
+ -- We can only push casts into global binders
+ , (Var g, _) <- collectArgs f
+ , isGlobalId g = do
   bndrs <- Lens.use bindings
   isWorkFree workFreeBinders bndrs e' >>= \case
     True -> go
