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