content: -----------------------------------------------------------------------
  -- |
  -- Module           : Lang.Crucible.LLVM.Extension
  -- Description      : LLVM interface for Crucible
  -- Copyright        : (c) Galois, Inc 2015-2016
  -- License          : BSD3
  -- Maintainer       : rdockins@galois.com
  -- Stability        : provisional
  --
  -- Syntax extension definitions for LLVM
  ------------------------------------------------------------------------
  
  {-# LANGUAGE DeriveDataTypeable #-}
  {-# LANGUAGE DeriveGeneric #-}
  {-# LANGUAGE EmptyDataDeriving #-}
  {-# LANGUAGE TypeFamilies #-}
  
  module Lang.Crucible.LLVM.Extension
    ( module Lang.Crucible.LLVM.Extension.Arch
    , module Lang.Crucible.LLVM.Extension.Syntax
    , LLVM
    ) where
  
  import Data.Data (Data)
  import Data.Typeable (Typeable)
  import GHC.Generics ( Generic )
  
  import Lang.Crucible.CFG.Extension
  
  import Lang.Crucible.LLVM.Extension.Arch
  import Lang.Crucible.LLVM.Extension.Syntax
  
  -- | The Crucible extension type marker for LLVM.
  data LLVM
    deriving (Data, Eq, Generic , Ord, Typeable)
  
  -- -----------------------------------------------------------------------
  -- ** Syntax
  
  type instance ExprExtension LLVM = LLVMExtensionExpr
  type instance StmtExtension LLVM = LLVMStmt
  
  instance IsSyntaxExtension LLVM
  