never executed always true always false
    1 -- ----------------------------------------------------------------------------
    2 -- | This module supplies bindings to generate Llvm IR from Haskell
    3 -- (<http://www.llvm.org/docs/LangRef.html>).
    4 --
    5 -- Note: this module is developed in a demand driven way. It is no complete
    6 -- LLVM binding library in Haskell, but enough to generate code for GHC.
    7 --
    8 -- This code is derived from code taken from the Essential Haskell Compiler
    9 -- (EHC) project.
   10 --
   11 
   12 module GHC.Llvm (
   13         LlvmOpts (..),
   14         initLlvmOpts,
   15 
   16         -- * Modules, Functions and Blocks
   17         LlvmModule(..),
   18 
   19         LlvmFunction(..), LlvmFunctionDecl(..),
   20         LlvmFunctions, LlvmFunctionDecls,
   21         LlvmStatement(..), LlvmExpression(..),
   22         LlvmBlocks, LlvmBlock(..), LlvmBlockId,
   23         LlvmParamAttr(..), LlvmParameter,
   24 
   25         -- * Atomic operations
   26         LlvmAtomicOp(..),
   27 
   28         -- * Fence synchronization
   29         LlvmSyncOrdering(..),
   30 
   31         -- * Call Handling
   32         LlvmCallConvention(..), LlvmCallType(..), LlvmParameterListType(..),
   33         LlvmLinkageType(..), LlvmFuncAttr(..),
   34 
   35         -- * Operations and Comparisons
   36         LlvmCmpOp(..), LlvmMachOp(..), LlvmCastOp(..),
   37 
   38         -- * Variables and Type System
   39         LlvmVar(..), LlvmStatic(..), LlvmLit(..), LlvmType(..),
   40         LlvmAlias, LMGlobal(..), LMString, LMSection, LMAlign,
   41         LMConst(..),
   42 
   43         -- ** Some basic types
   44         i64, i32, i16, i8, i1, i8Ptr, llvmWord, llvmWordPtr,
   45 
   46         -- ** Metadata types
   47         MetaExpr(..), MetaAnnot(..), MetaDecl(..), MetaId(..),
   48 
   49         -- ** Operations on the type system.
   50         isGlobal, getLitType, getVarType,
   51         getLink, getStatType, pVarLift, pVarLower,
   52         pLift, pLower, isInt, isFloat, isPointer, isVector, llvmWidthInBits,
   53 
   54         -- * Pretty Printing
   55         ppVar, ppLit, ppTypeLit, ppName, ppPlainName,
   56         ppLlvmModule, ppLlvmComments, ppLlvmComment, ppLlvmGlobals,
   57         ppLlvmGlobal, ppLlvmFunctionDecls, ppLlvmFunctionDecl, ppLlvmFunctions,
   58         ppLlvmFunction, ppLlvmAlias, ppLlvmAliases, ppLlvmMetas, ppLlvmMeta,
   59 
   60     ) where
   61 
   62 import GHC.Llvm.Syntax
   63 import GHC.Llvm.MetaData
   64 import GHC.Llvm.Ppr
   65 import GHC.Llvm.Types
   66