diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for llvm-pretty
 
+## 0.13.1.0 (October 2025)
+
+* Add a `FunctionPointerAlign` constructor to `LayoutSpec`.
+
 ## 0.13.0.0 (March 2025)
 
 * Changed some of the signatures of helper functions in the AST to make them more
diff --git a/llvm-pretty.cabal b/llvm-pretty.cabal
--- a/llvm-pretty.cabal
+++ b/llvm-pretty.cabal
@@ -1,6 +1,6 @@
 Cabal-version:       2.2
 Name:                llvm-pretty
-Version:             0.13.0.0
+Version:             0.13.1.0
 License:             BSD-3-Clause
 License-file:        LICENSE
 Author:              Trevor Elliott
@@ -13,7 +13,7 @@
   Augustsson.  The library provides a monadic interface to a pretty printer,
   that allows functions to be defined and called, generating the corresponding
   LLVM assembly when run.
-tested-with:         GHC==9.8.4, GHC==9.6.6, GHC==9.4.8
+tested-with:         GHC==9.10.1, GHC==9.8.4, GHC==9.6.6
 extra-doc-files:     CHANGELOG.md, README.md
 
 
diff --git a/src/Text/LLVM.hs b/src/Text/LLVM.hs
--- a/src/Text/LLVM.hs
+++ b/src/Text/LLVM.hs
@@ -40,6 +40,7 @@
 
     -- * Basic Blocks
   , BB()
+  , runBB
   , freshLabel
   , label
   , comment
diff --git a/src/Text/LLVM/AST.hs b/src/Text/LLVM/AST.hs
--- a/src/Text/LLVM/AST.hs
+++ b/src/Text/LLVM/AST.hs
@@ -28,6 +28,7 @@
     -- * Data Layout
   , DataLayout
   , LayoutSpec(..)
+  , FunctionPointerAlignType(..)
   , Mangling(..)
   , parseDataLayout
     -- * Inline Assembly
@@ -292,9 +293,20 @@
   | AggregateSize !Int !Int (Maybe Int) -- ^ size, abi, pref
   | NativeIntSize [Int]
   | StackAlign    !Int -- ^ size
+  | FunctionPointerAlign !FunctionPointerAlignType !Int -- ^ type, abi
   | Mangling Mangling
     deriving (Data, Eq, Generic, Ord, Show, Typeable)
 
+-- | How should a function pointer be aligned?
+data FunctionPointerAlignType
+  = IndependentOfFunctionAlign
+    -- ^ The alignment of function pointers is independent of the alignment of
+    -- functions.
+  | MultipleOfFunctionAlign
+    -- ^ The alignment of function pointers is a multiple of the explicit
+    -- alignment specified on the function.
+  deriving (Data, Eq, Enum, Generic, Ord, Show, Typeable)
+
 data Mangling = ElfMangling
               | MipsMangling
               | MachOMangling
@@ -318,6 +330,7 @@
            'E' -> return BigEndian
            'e' -> return LittleEndian
            'S' -> StackAlign    <$> pInt
+           'F' -> FunctionPointerAlign <$> pFunctionPointerAlignType <*> pInt
            'p' -> PointerSize   <$> pInt0 <*> pCInt <*> pCInt <*> pPref
            'i' -> IntegerSize   <$> pInt <*> pCInt <*> pPref
            'v' -> VectorSize    <$> pInt <*> pCInt <*> pPref
@@ -340,6 +353,14 @@
            'a' -> AggregateSize <$> pInt <*> pCInt <*> pPref
            'n' -> NativeIntSize <$> sepBy pInt (char ':')
            'm' -> Mangling      <$> (char ':' >> pMangling)
+           _   -> mzero
+
+    pFunctionPointerAlignType :: Parser FunctionPointerAlignType
+    pFunctionPointerAlignType =
+      do c <- letter
+         case c of
+           'i' -> return IndependentOfFunctionAlign
+           'n' -> return MultipleOfFunctionAlign
            _   -> mzero
 
     pMangling :: Parser Mangling
diff --git a/src/Text/LLVM/PP.hs b/src/Text/LLVM/PP.hs
--- a/src/Text/LLVM/PP.hs
+++ b/src/Text/LLVM/PP.hs
@@ -216,6 +216,8 @@
     AggregateSize sz abi pref -> char 'a' <> ppLayoutBody sz abi pref
     NativeIntSize szs         ->
       char 'n' <> hcat (punctuate (char ':') (map int szs))
+    FunctionPointerAlign ty abi ->
+      char 'F' <> ppFunctionPointerAlignType ty <> int abi
     StackAlign a              -> char 'S' <> int a
     Mangling m                -> char 'm' <> char ':' <> ppMangling m
 
@@ -226,6 +228,12 @@
   pref = case mb of
     Nothing -> empty
     Just p  -> char ':' <> int p
+
+ppFunctionPointerAlignType :: Fmt FunctionPointerAlignType
+ppFunctionPointerAlignType ty =
+  case ty of
+    IndependentOfFunctionAlign -> char 'i'
+    MultipleOfFunctionAlign -> char 'n'
 
 ppMangling :: Fmt Mangling
 ppMangling ElfMangling         = char 'e'
