Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Text.LLVM.AST
Contents
- Modules
- Named Metadata
- Unnamed Metadata
- Aliases
- Data Layout
- Inline Assembly
- Comdat
- Identifiers
- Symbols
- Types
- Null values
- Type Elimination
- Top-level Type Aliases
- Globals
- Declarations
- Function Definitions
- Function Attributes and attribute groups
- Basic Block Labels
- Basic Blocks
- Attributes
- Typed Things
- Instructions
- Values
- Value Elimination
- Statements
- Constant Expressions
- DWARF Debug Info
- Aggregate Utilities
Description
Because this library supports many LLVM versions, it is possible to construct
an AST with the types in this module that only some LLVM versions will accept.
These cases are usually documented in the Haddocks for the relevant data types.
When trying to pretty-print constructions that are unsupported by the current
LLVM version, pretty-printing may error
.
At the same time, while the AST coverage is fairly extensive, it is also incomplete: there are some values that new LLVM versions would accept but are not yet represented here.
Synopsis
- data Module = Module {
- modSourceName :: Maybe String
- modTriple :: TargetTriple
- modDataLayout :: DataLayout
- modTypes :: [TypeDecl]
- modNamedMd :: [NamedMd]
- modUnnamedMd :: [UnnamedMd]
- modComdat :: Map String SelectionKind
- modGlobals :: [Global]
- modDeclares :: [Declare]
- modDefines :: [Define]
- modInlineAsm :: InlineAsm
- modAliases :: [GlobalAlias]
- emptyModule :: Module
- data NamedMd = NamedMd {}
- data UnnamedMd = UnnamedMd {}
- data GlobalAlias = GlobalAlias {}
- type DataLayout = [LayoutSpec]
- data LayoutSpec
- = BigEndian
- | LittleEndian
- | PointerSize !Int !Int !Int (Maybe Int)
- | IntegerSize !Int !Int (Maybe Int)
- | VectorSize !Int !Int (Maybe Int)
- | FloatSize !Int !Int (Maybe Int)
- | StackObjSize !Int !Int (Maybe Int)
- | AggregateSize !Int !Int (Maybe Int)
- | NativeIntSize [Int]
- | StackAlign !Int
- | Mangling Mangling
- data Mangling
- parseDataLayout :: MonadPlus m => String -> m DataLayout
- type InlineAsm = [String]
- data SelectionKind
- newtype Ident = Ident String
- newtype Symbol = Symbol String
- data PrimType
- data FloatType
- type Type = Type' Ident
- data Type' ident
- updateAliasesA :: Applicative f => (a -> f (Type' b)) -> Type' a -> f (Type' b)
- updateAliases :: (a -> Type' b) -> Type' a -> Type' b
- isFloatingPoint :: PrimType -> Bool
- isAlias :: Type' ident -> Bool
- isPrimTypeOf :: (PrimType -> Bool) -> Type' ident -> Bool
- isLabel :: PrimType -> Bool
- isInteger :: PrimType -> Bool
- isVector :: Type' ident -> Bool
- isVectorOf :: (Type' ident -> Bool) -> Type' ident -> Bool
- isArray :: Type' ident -> Bool
- isPointer :: Type' ident -> Bool
- eqTypeModuloOpaquePtrs :: Eq ident => Type' ident -> Type' ident -> Bool
- cmpTypeModuloOpaquePtrs :: Ord ident => Type' ident -> Type' ident -> Ordering
- fixupOpaquePtrs :: Data a => a -> a
- data NullResult lab
- = HasNull (Value' lab)
- | ResolveNull Ident
- primTypeNull :: PrimType -> Value' lab
- floatTypeNull :: FloatType -> Value' lab
- typeNull :: Type -> NullResult lab
- elimFunTy :: MonadPlus m => Type -> m (Type, [Type], Bool)
- elimAlias :: MonadPlus m => Type -> m Ident
- elimPtrTo :: MonadPlus m => Type -> m Type
- elimVector :: MonadPlus m => Type -> m (Word64, Type)
- elimArray :: MonadPlus m => Type -> m (Word64, Type)
- elimFunPtr :: MonadPlus m => Type -> m (Type, [Type], Bool)
- elimPrimType :: MonadPlus m => Type -> m PrimType
- elimFloatType :: MonadPlus m => PrimType -> m FloatType
- elimSequentialType :: MonadPlus m => Type -> m Type
- data TypeDecl = TypeDecl {}
- data Global = Global {}
- addGlobal :: Global -> Module -> Module
- data GlobalAttrs = GlobalAttrs {}
- emptyGlobalAttrs :: GlobalAttrs
- data Declare = Declare {
- decLinkage :: Maybe Linkage
- decVisibility :: Maybe Visibility
- decRetType :: Type
- decName :: Symbol
- decArgs :: [Type]
- decVarArgs :: Bool
- decAttrs :: [FunAttr]
- decComdat :: Maybe String
- decFunType :: Declare -> Type
- data Define = Define {
- defLinkage :: Maybe Linkage
- defVisibility :: Maybe Visibility
- defRetType :: Type
- defName :: Symbol
- defArgs :: [Typed Ident]
- defVarArgs :: Bool
- defAttrs :: [FunAttr]
- defSection :: Maybe String
- defGC :: Maybe GC
- defBody :: [BasicBlock]
- defMetadata :: FnMdAttachments
- defComdat :: Maybe String
- defFunType :: Define -> Type
- addDefine :: Define -> Module -> Module
- data FunAttr
- = AlignStack Int
- | Alwaysinline
- | Builtin
- | Cold
- | Inlinehint
- | Jumptable
- | Minsize
- | Naked
- | Nobuiltin
- | Noduplicate
- | Noimplicitfloat
- | Noinline
- | Nonlazybind
- | Noredzone
- | Noreturn
- | Nounwind
- | Optnone
- | Optsize
- | Readnone
- | Readonly
- | ReturnsTwice
- | SanitizeAddress
- | SanitizeMemory
- | SanitizeThread
- | SSP
- | SSPreq
- | SSPstrong
- | UWTable
- data BlockLabel
- data BasicBlock' lab = BasicBlock {}
- type BasicBlock = BasicBlock' BlockLabel
- brTargets :: BasicBlock' lab -> [lab]
- data Linkage
- data Visibility
- newtype GC = GC {}
- data Typed a = Typed {
- typedType :: Type
- typedValue :: a
- mapMTyped :: Monad m => (a -> m b) -> Typed a -> m (Typed b)
- data ArithOp
- isIArith :: ArithOp -> Bool
- isFArith :: ArithOp -> Bool
- data UnaryArithOp = FNeg
- data BitOp
- data ConvOp
- data AtomicRWOp
- data AtomicOrdering
- type Align = Int
- data Instr' lab
- = Ret (Typed (Value' lab))
- | RetVoid
- | Arith ArithOp (Typed (Value' lab)) (Value' lab)
- | UnaryArith UnaryArithOp (Typed (Value' lab))
- | Bit BitOp (Typed (Value' lab)) (Value' lab)
- | Conv ConvOp (Typed (Value' lab)) Type
- | Call Bool Type (Value' lab) [Typed (Value' lab)]
- | CallBr Type (Value' lab) [Typed (Value' lab)] lab [lab]
- | Alloca Type (Maybe (Typed (Value' lab))) (Maybe Int)
- | Load Type (Typed (Value' lab)) (Maybe AtomicOrdering) (Maybe Align)
- | Store (Typed (Value' lab)) (Typed (Value' lab)) (Maybe AtomicOrdering) (Maybe Align)
- | Fence (Maybe String) AtomicOrdering
- | CmpXchg Bool Bool (Typed (Value' lab)) (Typed (Value' lab)) (Typed (Value' lab)) (Maybe String) AtomicOrdering AtomicOrdering
- | AtomicRW Bool AtomicRWOp (Typed (Value' lab)) (Typed (Value' lab)) (Maybe String) AtomicOrdering
- | ICmp ICmpOp (Typed (Value' lab)) (Value' lab)
- | FCmp FCmpOp (Typed (Value' lab)) (Value' lab)
- | Phi Type [(Value' lab, lab)]
- | GEP Bool Type (Typed (Value' lab)) [Typed (Value' lab)]
- | Select (Typed (Value' lab)) (Typed (Value' lab)) (Value' lab)
- | ExtractValue (Typed (Value' lab)) [Int32]
- | InsertValue (Typed (Value' lab)) (Typed (Value' lab)) [Int32]
- | ExtractElt (Typed (Value' lab)) (Value' lab)
- | InsertElt (Typed (Value' lab)) (Typed (Value' lab)) (Value' lab)
- | ShuffleVector (Typed (Value' lab)) (Value' lab) (Typed (Value' lab))
- | Jump lab
- | Br (Typed (Value' lab)) lab lab
- | Invoke Type (Value' lab) [Typed (Value' lab)] lab lab
- | Comment String
- | Unreachable
- | Unwind
- | VaArg (Typed (Value' lab)) Type
- | IndirectBr (Typed (Value' lab)) [lab]
- | Switch (Typed (Value' lab)) lab [(Integer, lab)]
- | LandingPad Type (Maybe (Typed (Value' lab))) Bool [Clause' lab]
- | Resume (Typed (Value' lab))
- | Freeze (Typed (Value' lab))
- type Instr = Instr' BlockLabel
- data Clause' lab
- type Clause = Clause' BlockLabel
- isTerminator :: Instr' lab -> Bool
- isComment :: Instr' lab -> Bool
- isPhi :: Instr' lab -> Bool
- data ICmpOp
- data FCmpOp
- data Value' lab
- = ValInteger Integer
- | ValBool Bool
- | ValFloat Float
- | ValDouble Double
- | ValFP80 FP80Value
- | ValIdent Ident
- | ValSymbol Symbol
- | ValNull
- | ValArray Type [Value' lab]
- | ValVector Type [Value' lab]
- | ValStruct [Typed (Value' lab)]
- | ValPackedStruct [Typed (Value' lab)]
- | ValString [Word8]
- | ValConstExpr (ConstExpr' lab)
- | ValUndef
- | ValLabel lab
- | ValZeroInit
- | ValAsm Bool Bool String String
- | ValMd (ValMd' lab)
- | ValPoison
- type Value = Value' BlockLabel
- data FP80Value = FP80_LongDouble Word16 Word64
- data ValMd' lab
- = ValMdString String
- | ValMdValue (Typed (Value' lab))
- | ValMdRef Int
- | ValMdNode [Maybe (ValMd' lab)]
- | ValMdLoc (DebugLoc' lab)
- | ValMdDebugInfo (DebugInfo' lab)
- type ValMd = ValMd' BlockLabel
- type KindMd = String
- type FnMdAttachments = Map KindMd ValMd
- type GlobalMdAttachments = Map KindMd ValMd
- data DebugLoc' lab = DebugLoc {}
- type DebugLoc = DebugLoc' BlockLabel
- isConst :: Value' lab -> Bool
- elimValSymbol :: MonadPlus m => Value' lab -> m Symbol
- elimValInteger :: MonadPlus m => Value' lab -> m Integer
- data Stmt' lab
- type Stmt = Stmt' BlockLabel
- stmtInstr :: Stmt' lab -> Instr' lab
- stmtMetadata :: Stmt' lab -> [(String, ValMd' lab)]
- extendMetadata :: (String, ValMd' lab) -> Stmt' lab -> Stmt' lab
- data ConstExpr' lab
- = ConstGEP Bool (Maybe Word64) Type (Typed (Value' lab)) [Typed (Value' lab)]
- | ConstConv ConvOp (Typed (Value' lab)) Type
- | ConstSelect (Typed (Value' lab)) (Typed (Value' lab)) (Typed (Value' lab))
- | ConstBlockAddr (Typed (Value' lab)) lab
- | ConstFCmp FCmpOp (Typed (Value' lab)) (Typed (Value' lab))
- | ConstICmp ICmpOp (Typed (Value' lab)) (Typed (Value' lab))
- | ConstArith ArithOp (Typed (Value' lab)) (Value' lab)
- | ConstUnaryArith UnaryArithOp (Typed (Value' lab))
- | ConstBit BitOp (Typed (Value' lab)) (Value' lab)
- type ConstExpr = ConstExpr' BlockLabel
- data DebugInfo' lab
- = DebugInfoBasicType DIBasicType
- | DebugInfoCompileUnit (DICompileUnit' lab)
- | DebugInfoCompositeType (DICompositeType' lab)
- | DebugInfoDerivedType (DIDerivedType' lab)
- | DebugInfoEnumerator String !Integer Bool
- | DebugInfoExpression DIExpression
- | DebugInfoFile DIFile
- | DebugInfoGlobalVariable (DIGlobalVariable' lab)
- | DebugInfoGlobalVariableExpression (DIGlobalVariableExpression' lab)
- | DebugInfoLexicalBlock (DILexicalBlock' lab)
- | DebugInfoLexicalBlockFile (DILexicalBlockFile' lab)
- | DebugInfoLocalVariable (DILocalVariable' lab)
- | DebugInfoSubprogram (DISubprogram' lab)
- | DebugInfoSubrange (DISubrange' lab)
- | DebugInfoSubroutineType (DISubroutineType' lab)
- | DebugInfoNameSpace (DINameSpace' lab)
- | DebugInfoTemplateTypeParameter (DITemplateTypeParameter' lab)
- | DebugInfoTemplateValueParameter (DITemplateValueParameter' lab)
- | DebugInfoImportedEntity (DIImportedEntity' lab)
- | DebugInfoLabel (DILabel' lab)
- | DebugInfoArgList (DIArgList' lab)
- | DebugInfoAssignID
- type DebugInfo = DebugInfo' BlockLabel
- type DILabel = DILabel' BlockLabel
- data DILabel' lab = DILabel {}
- type DIImportedEntity = DIImportedEntity' BlockLabel
- data DIImportedEntity' lab = DIImportedEntity {}
- type DITemplateTypeParameter = DITemplateTypeParameter' BlockLabel
- data DITemplateTypeParameter' lab = DITemplateTypeParameter {}
- type DITemplateValueParameter = DITemplateValueParameter' BlockLabel
- data DITemplateValueParameter' lab = DITemplateValueParameter {}
- type DINameSpace = DINameSpace' BlockLabel
- data DINameSpace' lab = DINameSpace {}
- type DwarfAttrEncoding = Word16
- type DwarfLang = Word16
- type DwarfTag = Word16
- type DwarfVirtuality = Word8
- type DIFlags = Word32
- type DIEmissionKind = Word8
- data DIBasicType = DIBasicType {}
- data DICompileUnit' lab = DICompileUnit {
- dicuLanguage :: DwarfLang
- dicuFile :: Maybe (ValMd' lab)
- dicuProducer :: Maybe String
- dicuIsOptimized :: Bool
- dicuFlags :: Maybe String
- dicuRuntimeVersion :: Word16
- dicuSplitDebugFilename :: Maybe FilePath
- dicuEmissionKind :: DIEmissionKind
- dicuEnums :: Maybe (ValMd' lab)
- dicuRetainedTypes :: Maybe (ValMd' lab)
- dicuSubprograms :: Maybe (ValMd' lab)
- dicuGlobals :: Maybe (ValMd' lab)
- dicuImports :: Maybe (ValMd' lab)
- dicuMacros :: Maybe (ValMd' lab)
- dicuDWOId :: Word64
- dicuSplitDebugInlining :: Bool
- dicuDebugInfoForProf :: Bool
- dicuNameTableKind :: Word64
- dicuRangesBaseAddress :: Bool
- dicuSysRoot :: Maybe String
- dicuSDK :: Maybe String
- type DICompileUnit = DICompileUnit' BlockLabel
- data DICompositeType' lab = DICompositeType {
- dictTag :: DwarfTag
- dictName :: Maybe String
- dictFile :: Maybe (ValMd' lab)
- dictLine :: Word32
- dictScope :: Maybe (ValMd' lab)
- dictBaseType :: Maybe (ValMd' lab)
- dictSize :: Word64
- dictAlign :: Word64
- dictOffset :: Word64
- dictFlags :: DIFlags
- dictElements :: Maybe (ValMd' lab)
- dictRuntimeLang :: DwarfLang
- dictVTableHolder :: Maybe (ValMd' lab)
- dictTemplateParams :: Maybe (ValMd' lab)
- dictIdentifier :: Maybe String
- dictDiscriminator :: Maybe (ValMd' lab)
- dictDataLocation :: Maybe (ValMd' lab)
- dictAssociated :: Maybe (ValMd' lab)
- dictAllocated :: Maybe (ValMd' lab)
- dictRank :: Maybe (ValMd' lab)
- dictAnnotations :: Maybe (ValMd' lab)
- type DICompositeType = DICompositeType' BlockLabel
- data DIDerivedType' lab = DIDerivedType {
- didtTag :: DwarfTag
- didtName :: Maybe String
- didtFile :: Maybe (ValMd' lab)
- didtLine :: Word32
- didtScope :: Maybe (ValMd' lab)
- didtBaseType :: Maybe (ValMd' lab)
- didtSize :: Word64
- didtAlign :: Word64
- didtOffset :: Word64
- didtFlags :: DIFlags
- didtExtraData :: Maybe (ValMd' lab)
- didtDwarfAddressSpace :: Maybe Word32
- didtAnnotations :: Maybe (ValMd' lab)
- type DIDerivedType = DIDerivedType' BlockLabel
- data DIExpression = DIExpression {
- dieElements :: [Word64]
- data DIFile = DIFile {}
- data DIGlobalVariable' lab = DIGlobalVariable {
- digvScope :: Maybe (ValMd' lab)
- digvName :: Maybe String
- digvLinkageName :: Maybe String
- digvFile :: Maybe (ValMd' lab)
- digvLine :: Word32
- digvType :: Maybe (ValMd' lab)
- digvIsLocal :: Bool
- digvIsDefinition :: Bool
- digvVariable :: Maybe (ValMd' lab)
- digvDeclaration :: Maybe (ValMd' lab)
- digvAlignment :: Maybe Word32
- digvAnnotations :: Maybe (ValMd' lab)
- type DIGlobalVariable = DIGlobalVariable' BlockLabel
- data DIGlobalVariableExpression' lab = DIGlobalVariableExpression {
- digveVariable :: Maybe (ValMd' lab)
- digveExpression :: Maybe (ValMd' lab)
- type DIGlobalVariableExpression = DIGlobalVariableExpression' BlockLabel
- data DILexicalBlock' lab = DILexicalBlock {}
- type DILexicalBlock = DILexicalBlock' BlockLabel
- data DILexicalBlockFile' lab = DILexicalBlockFile {
- dilbfScope :: ValMd' lab
- dilbfFile :: Maybe (ValMd' lab)
- dilbfDiscriminator :: Word32
- type DILexicalBlockFile = DILexicalBlockFile' BlockLabel
- data DILocalVariable' lab = DILocalVariable {}
- type DILocalVariable = DILocalVariable' BlockLabel
- data DISubprogram' lab = DISubprogram {
- dispScope :: Maybe (ValMd' lab)
- dispName :: Maybe String
- dispLinkageName :: Maybe String
- dispFile :: Maybe (ValMd' lab)
- dispLine :: Word32
- dispType :: Maybe (ValMd' lab)
- dispIsLocal :: Bool
- dispIsDefinition :: Bool
- dispScopeLine :: Word32
- dispContainingType :: Maybe (ValMd' lab)
- dispVirtuality :: DwarfVirtuality
- dispVirtualIndex :: Word32
- dispThisAdjustment :: Int64
- dispFlags :: DIFlags
- dispIsOptimized :: Bool
- dispUnit :: Maybe (ValMd' lab)
- dispTemplateParams :: Maybe (ValMd' lab)
- dispDeclaration :: Maybe (ValMd' lab)
- dispRetainedNodes :: Maybe (ValMd' lab)
- dispThrownTypes :: Maybe (ValMd' lab)
- dispAnnotations :: Maybe (ValMd' lab)
- type DISubprogram = DISubprogram' BlockLabel
- data DISubrange' lab = DISubrange {
- disrCount :: Maybe (ValMd' lab)
- disrLowerBound :: Maybe (ValMd' lab)
- disrUpperBound :: Maybe (ValMd' lab)
- disrStride :: Maybe (ValMd' lab)
- type DISubrange = DISubrange' BlockLabel
- data DISubroutineType' lab = DISubroutineType {
- distFlags :: DIFlags
- distTypeArray :: Maybe (ValMd' lab)
- type DISubroutineType = DISubroutineType' BlockLabel
- newtype DIArgList' lab = DIArgList {}
- type DIArgList = DIArgList' BlockLabel
- data IndexResult
- isInvalid :: IndexResult -> Bool
- resolveGepFull :: (Ident -> Maybe Type) -> Type -> Typed (Value' lab) -> [Typed (Value' lab)] -> Maybe Type
- resolveGep :: Type -> Typed (Value' lab) -> [Typed (Value' lab)] -> IndexResult
- resolveGepBody :: Type -> [Typed (Value' lab)] -> IndexResult
- isGepIndex :: Typed (Value' lab) -> Bool
- isGepStructIndex :: Typed (Value' lab) -> Maybe Integer
- resolveValueIndex :: Type -> [Int32] -> IndexResult
Modules
Constructors
Module | |
Fields
|
Instances
emptyModule :: Module Source #
Named Metadata
Instances
Data NamedMd Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NamedMd -> c NamedMd # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NamedMd # toConstr :: NamedMd -> Constr # dataTypeOf :: NamedMd -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NamedMd) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NamedMd) # gmapT :: (forall b. Data b => b -> b) -> NamedMd -> NamedMd # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NamedMd -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NamedMd -> r # gmapQ :: (forall d. Data d => d -> u) -> NamedMd -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> NamedMd -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NamedMd -> m NamedMd # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NamedMd -> m NamedMd # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NamedMd -> m NamedMd # | |
Generic NamedMd Source # | |
Show NamedMd Source # | |
Eq NamedMd Source # | |
Ord NamedMd Source # | |
type Rep NamedMd Source # | |
Defined in Text.LLVM.AST type Rep NamedMd = D1 ('MetaData "NamedMd" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "NamedMd" 'PrefixI 'True) (S1 ('MetaSel ('Just "nmName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "nmValues") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Int]))) |
Unnamed Metadata
Instances
Data UnnamedMd Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UnnamedMd -> c UnnamedMd # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UnnamedMd # toConstr :: UnnamedMd -> Constr # dataTypeOf :: UnnamedMd -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c UnnamedMd) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UnnamedMd) # gmapT :: (forall b. Data b => b -> b) -> UnnamedMd -> UnnamedMd # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UnnamedMd -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UnnamedMd -> r # gmapQ :: (forall d. Data d => d -> u) -> UnnamedMd -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> UnnamedMd -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> UnnamedMd -> m UnnamedMd # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UnnamedMd -> m UnnamedMd # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UnnamedMd -> m UnnamedMd # | |
Generic UnnamedMd Source # | |
Show UnnamedMd Source # | |
Eq UnnamedMd Source # | |
Ord UnnamedMd Source # | |
type Rep UnnamedMd Source # | |
Defined in Text.LLVM.AST type Rep UnnamedMd = D1 ('MetaData "UnnamedMd" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "UnnamedMd" 'PrefixI 'True) (S1 ('MetaSel ('Just "umIndex") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "umValues") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ValMd) :*: S1 ('MetaSel ('Just "umDistinct") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) |
Aliases
data GlobalAlias Source #
Constructors
GlobalAlias | |
Fields
|
Instances
Data Layout
type DataLayout = [LayoutSpec] Source #
data LayoutSpec Source #
Constructors
BigEndian | |
LittleEndian | |
PointerSize !Int !Int !Int (Maybe Int) | address space, size, abi, pref |
IntegerSize !Int !Int (Maybe Int) | size, abi, pref |
VectorSize !Int !Int (Maybe Int) | size, abi, pref |
FloatSize !Int !Int (Maybe Int) | size, abi, pref |
StackObjSize !Int !Int (Maybe Int) | size, abi, pref |
AggregateSize !Int !Int (Maybe Int) | size, abi, pref |
NativeIntSize [Int] | |
StackAlign !Int | size |
Mangling Mangling |
Instances
Constructors
ElfMangling | |
MipsMangling | |
MachOMangling | |
WindowsCoffMangling |
Instances
Data Mangling Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Mangling -> c Mangling # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Mangling # toConstr :: Mangling -> Constr # dataTypeOf :: Mangling -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Mangling) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Mangling) # gmapT :: (forall b. Data b => b -> b) -> Mangling -> Mangling # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Mangling -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Mangling -> r # gmapQ :: (forall d. Data d => d -> u) -> Mangling -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Mangling -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Mangling -> m Mangling # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Mangling -> m Mangling # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Mangling -> m Mangling # | |
Enum Mangling Source # | |
Generic Mangling Source # | |
Show Mangling Source # | |
Eq Mangling Source # | |
Ord Mangling Source # | |
Defined in Text.LLVM.AST | |
type Rep Mangling Source # | |
Defined in Text.LLVM.AST type Rep Mangling = D1 ('MetaData "Mangling" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) ((C1 ('MetaCons "ElfMangling" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MipsMangling" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MachOMangling" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "WindowsCoffMangling" 'PrefixI 'False) (U1 :: Type -> Type))) |
parseDataLayout :: MonadPlus m => String -> m DataLayout Source #
Parse the data layout string.
Inline Assembly
Comdat
data SelectionKind Source #
Instances
Identifiers
Instances
Data Ident Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Ident -> c Ident # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Ident # dataTypeOf :: Ident -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Ident) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Ident) # gmapT :: (forall b. Data b => b -> b) -> Ident -> Ident # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ident -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ident -> r # gmapQ :: (forall d. Data d => d -> u) -> Ident -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Ident -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Ident -> m Ident # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Ident -> m Ident # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Ident -> m Ident # | |
IsString Ident Source # | |
Defined in Text.LLVM.AST Methods fromString :: String -> Ident # | |
Generic Ident Source # | |
Show Ident Source # | |
Eq Ident Source # | |
Ord Ident Source # | |
IsValue Ident Source # | |
LLVMPretty Ident Source # | |
Lift Ident Source # | |
DefineArgs Type (Typed Value -> BB ()) Source # | |
DefineArgs as k => DefineArgs (Type :> as) (Typed Value -> k) Source # | |
DefineArgs (Type, Type) (Typed Value -> Typed Value -> BB ()) Source # | |
DefineArgs (Type, Type, Type) (Typed Value -> Typed Value -> Typed Value -> BB ()) Source # | |
type Rep Ident Source # | |
Defined in Text.LLVM.AST |
Symbols
Instances
Data Symbol Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Symbol -> c Symbol # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Symbol # toConstr :: Symbol -> Constr # dataTypeOf :: Symbol -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Symbol) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Symbol) # gmapT :: (forall b. Data b => b -> b) -> Symbol -> Symbol # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Symbol -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Symbol -> r # gmapQ :: (forall d. Data d => d -> u) -> Symbol -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Symbol -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Symbol -> m Symbol # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Symbol -> m Symbol # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Symbol -> m Symbol # | |
IsString Symbol Source # | |
Defined in Text.LLVM.AST Methods fromString :: String -> Symbol # | |
Monoid Symbol Source # | |
Semigroup Symbol Source # | |
Generic Symbol Source # | |
Show Symbol Source # | |
Eq Symbol Source # | |
Ord Symbol Source # | |
IsValue Symbol Source # | |
LLVMPretty Symbol Source # | |
Lift Symbol Source # | |
type Rep Symbol Source # | |
Defined in Text.LLVM.AST |
Types
Instances
Data PrimType Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PrimType -> c PrimType # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PrimType # toConstr :: PrimType -> Constr # dataTypeOf :: PrimType -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PrimType) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PrimType) # gmapT :: (forall b. Data b => b -> b) -> PrimType -> PrimType # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PrimType -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PrimType -> r # gmapQ :: (forall d. Data d => d -> u) -> PrimType -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> PrimType -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> PrimType -> m PrimType # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PrimType -> m PrimType # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PrimType -> m PrimType # | |
Generic PrimType Source # | |
Show PrimType Source # | |
Eq PrimType Source # | |
Ord PrimType Source # | |
Defined in Text.LLVM.AST | |
Lift PrimType Source # | |
type Rep PrimType Source # | |
Defined in Text.LLVM.AST type Rep PrimType = D1 ('MetaData "PrimType" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) ((C1 ('MetaCons "Label" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Void" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Integer" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word32)))) :+: (C1 ('MetaCons "FloatType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FloatType)) :+: (C1 ('MetaCons "X86mmx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Metadata" 'PrefixI 'False) (U1 :: Type -> Type)))) |
Instances
Data FloatType Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FloatType -> c FloatType # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FloatType # toConstr :: FloatType -> Constr # dataTypeOf :: FloatType -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FloatType) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FloatType) # gmapT :: (forall b. Data b => b -> b) -> FloatType -> FloatType # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FloatType -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FloatType -> r # gmapQ :: (forall d. Data d => d -> u) -> FloatType -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FloatType -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FloatType -> m FloatType # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FloatType -> m FloatType # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FloatType -> m FloatType # | |
Enum FloatType Source # | |
Defined in Text.LLVM.AST Methods succ :: FloatType -> FloatType # pred :: FloatType -> FloatType # fromEnum :: FloatType -> Int # enumFrom :: FloatType -> [FloatType] # enumFromThen :: FloatType -> FloatType -> [FloatType] # enumFromTo :: FloatType -> FloatType -> [FloatType] # enumFromThenTo :: FloatType -> FloatType -> FloatType -> [FloatType] # | |
Generic FloatType Source # | |
Show FloatType Source # | |
Eq FloatType Source # | |
Ord FloatType Source # | |
Lift FloatType Source # | |
type Rep FloatType Source # | |
Defined in Text.LLVM.AST type Rep FloatType = D1 ('MetaData "FloatType" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) ((C1 ('MetaCons "Half" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Float" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Double" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "Fp128" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "X86_fp80" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PPC_fp128" 'PrefixI 'False) (U1 :: Type -> Type)))) |
Constructors
PrimType PrimType | |
Alias ident | |
Array Word64 (Type' ident) | |
FunTy (Type' ident) [Type' ident] Bool | |
PtrTo (Type' ident) | A pointer to a memory location of a particular type. See also
LLVM pointers can also have an optional address space attribute, but this
is not currently represented in the |
PtrOpaque | A pointer to a memory location. Unlike LLVM pointers can also have an optional address space attribute, but this
is not currently represented in the
|
Struct [Type' ident] | |
PackedStruct [Type' ident] | |
Vector Word64 (Type' ident) | |
Opaque | An opaque structure type, used to represent structure types that do not have a body specified. This is similar to C's notion of a forward-declared structure.
|
Instances
updateAliasesA :: Applicative f => (a -> f (Type' b)) -> Type' a -> f (Type' b) Source #
Applicatively traverse a type, updating or removing aliases.
updateAliases :: (a -> Type' b) -> Type' a -> Type' b Source #
Traverse a type, updating or removing aliases.
isFloatingPoint :: PrimType -> Bool Source #
fixupOpaquePtrs :: Data a => a -> a Source #
Ensure that if there are any occurrences of opaque pointers, then all non-opaque pointers are converted to opaque ones.
This is useful because LLVM tools like llvm-as
are stricter than
llvm-pretty
in that the former forbids mixing opaque and non-opaque
pointers, whereas the latter allows this. As a result, the result of
pretty-printing an llvm-pretty
AST might not be suitable for llvm-as
's
needs unless you first call this function to ensure that the two types of
pointers are not intermixed.
This is implemented using Data.Data combinators under the hood, which could
potentially require a full traversal of the AST. Because of the performance
implications of this, we do not call fixupOpaquePtrs
in llvm-pretty
's
pretty-printer. If you wish to combine opaque and non-opaque pointers in your
AST, the burden is on you to call this function before pretty-printing.
Null values
data NullResult lab Source #
Constructors
HasNull (Value' lab) | |
ResolveNull Ident |
Instances
Functor NullResult Source # | |
Defined in Text.LLVM.AST Methods fmap :: (a -> b) -> NullResult a -> NullResult b # (<$) :: a -> NullResult b -> NullResult a # | |
Generic1 NullResult Source # | |
Defined in Text.LLVM.AST Associated Types type Rep1 NullResult :: k -> Type # Methods from1 :: forall (a :: k). NullResult a -> Rep1 NullResult a # to1 :: forall (a :: k). Rep1 NullResult a -> NullResult a # | |
Data lab => Data (NullResult lab) Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NullResult lab -> c (NullResult lab) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NullResult lab) # toConstr :: NullResult lab -> Constr # dataTypeOf :: NullResult lab -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NullResult lab)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NullResult lab)) # gmapT :: (forall b. Data b => b -> b) -> NullResult lab -> NullResult lab # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NullResult lab -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NullResult lab -> r # gmapQ :: (forall d. Data d => d -> u) -> NullResult lab -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> NullResult lab -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NullResult lab -> m (NullResult lab) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NullResult lab -> m (NullResult lab) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NullResult lab -> m (NullResult lab) # | |
Generic (NullResult lab) Source # | |
Defined in Text.LLVM.AST Associated Types type Rep (NullResult lab) :: Type -> Type # Methods from :: NullResult lab -> Rep (NullResult lab) x # to :: Rep (NullResult lab) x -> NullResult lab # | |
Show lab => Show (NullResult lab) Source # | |
Defined in Text.LLVM.AST Methods showsPrec :: Int -> NullResult lab -> ShowS # show :: NullResult lab -> String # showList :: [NullResult lab] -> ShowS # | |
Eq lab => Eq (NullResult lab) Source # | |
Defined in Text.LLVM.AST Methods (==) :: NullResult lab -> NullResult lab -> Bool # (/=) :: NullResult lab -> NullResult lab -> Bool # | |
Ord lab => Ord (NullResult lab) Source # | |
Defined in Text.LLVM.AST Methods compare :: NullResult lab -> NullResult lab -> Ordering # (<) :: NullResult lab -> NullResult lab -> Bool # (<=) :: NullResult lab -> NullResult lab -> Bool # (>) :: NullResult lab -> NullResult lab -> Bool # (>=) :: NullResult lab -> NullResult lab -> Bool # max :: NullResult lab -> NullResult lab -> NullResult lab # min :: NullResult lab -> NullResult lab -> NullResult lab # | |
type Rep1 NullResult Source # | |
Defined in Text.LLVM.AST type Rep1 NullResult = D1 ('MetaData "NullResult" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "HasNull" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 Value')) :+: C1 ('MetaCons "ResolveNull" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident))) | |
type Rep (NullResult lab) Source # | |
Defined in Text.LLVM.AST type Rep (NullResult lab) = D1 ('MetaData "NullResult" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "HasNull" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Value' lab))) :+: C1 ('MetaCons "ResolveNull" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident))) |
primTypeNull :: PrimType -> Value' lab Source #
floatTypeNull :: FloatType -> Value' lab Source #
typeNull :: Type -> NullResult lab Source #
Type Elimination
elimSequentialType :: MonadPlus m => Type -> m Type Source #
Eliminator for array, pointer and vector types.
Top-level Type Aliases
Instances
Data TypeDecl Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TypeDecl -> c TypeDecl # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TypeDecl # toConstr :: TypeDecl -> Constr # dataTypeOf :: TypeDecl -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TypeDecl) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TypeDecl) # gmapT :: (forall b. Data b => b -> b) -> TypeDecl -> TypeDecl # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TypeDecl -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TypeDecl -> r # gmapQ :: (forall d. Data d => d -> u) -> TypeDecl -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> TypeDecl -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TypeDecl -> m TypeDecl # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeDecl -> m TypeDecl # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeDecl -> m TypeDecl # | |
Generic TypeDecl Source # | |
Show TypeDecl Source # | |
Eq TypeDecl Source # | |
Ord TypeDecl Source # | |
Defined in Text.LLVM.AST | |
type Rep TypeDecl Source # | |
Defined in Text.LLVM.AST type Rep TypeDecl = D1 ('MetaData "TypeDecl" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "TypeDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "typeName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel ('Just "typeValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) |
Globals
Constructors
Global | |
Fields |
Instances
Data Global Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Global -> c Global # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Global # toConstr :: Global -> Constr # dataTypeOf :: Global -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Global) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Global) # gmapT :: (forall b. Data b => b -> b) -> Global -> Global # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Global -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Global -> r # gmapQ :: (forall d. Data d => d -> u) -> Global -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Global -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Global -> m Global # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Global -> m Global # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Global -> m Global # | |
Generic Global Source # | |
Show Global Source # | |
Eq Global Source # | |
Ord Global Source # | |
type Rep Global Source # | |
Defined in Text.LLVM.AST type Rep Global = D1 ('MetaData "Global" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "Global" 'PrefixI 'True) ((S1 ('MetaSel ('Just "globalSym") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Symbol) :*: (S1 ('MetaSel ('Just "globalAttrs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalAttrs) :*: S1 ('MetaSel ('Just "globalType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: (S1 ('MetaSel ('Just "globalValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Value)) :*: (S1 ('MetaSel ('Just "globalAlign") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Align)) :*: S1 ('MetaSel ('Just "globalMetadata") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalMdAttachments))))) |
data GlobalAttrs Source #
Constructors
GlobalAttrs | |
Fields
|
Instances
Declarations
Constructors
Declare | |
Fields
|
Instances
decFunType :: Declare -> Type Source #
The function type of this declaration
Function Definitions
Constructors
Define | |
Fields
|
Instances
defFunType :: Define -> Type Source #
Function Attributes and attribute groups
Constructors
Instances
Data FunAttr Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FunAttr -> c FunAttr # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FunAttr # toConstr :: FunAttr -> Constr # dataTypeOf :: FunAttr -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FunAttr) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FunAttr) # gmapT :: (forall b. Data b => b -> b) -> FunAttr -> FunAttr # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FunAttr -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FunAttr -> r # gmapQ :: (forall d. Data d => d -> u) -> FunAttr -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FunAttr -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FunAttr -> m FunAttr # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FunAttr -> m FunAttr # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FunAttr -> m FunAttr # | |
Generic FunAttr Source # | |
Show FunAttr Source # | |
Eq FunAttr Source # | |
Ord FunAttr Source # | |
type Rep FunAttr Source # | |
Defined in Text.LLVM.AST type Rep FunAttr = D1 ('MetaData "FunAttr" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) ((((C1 ('MetaCons "AlignStack" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: (C1 ('MetaCons "Alwaysinline" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Builtin" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Cold" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Inlinehint" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Jumptable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Minsize" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "Naked" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Nobuiltin" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Noduplicate" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Noimplicitfloat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Noinline" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Nonlazybind" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Noredzone" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "Noreturn" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Nounwind" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Optnone" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Optsize" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Readnone" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Readonly" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ReturnsTwice" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "SanitizeAddress" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SanitizeMemory" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SanitizeThread" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "SSP" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SSPreq" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "SSPstrong" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UWTable" 'PrefixI 'False) (U1 :: Type -> Type)))))) |
Basic Block Labels
data BlockLabel Source #
Instances
Basic Blocks
data BasicBlock' lab Source #
Constructors
BasicBlock | |
Instances
Functor BasicBlock' Source # | |
Defined in Text.LLVM.AST Methods fmap :: (a -> b) -> BasicBlock' a -> BasicBlock' b # (<$) :: a -> BasicBlock' b -> BasicBlock' a # | |
Generic1 BasicBlock' Source # | |
Defined in Text.LLVM.AST Associated Types type Rep1 BasicBlock' :: k -> Type # Methods from1 :: forall (a :: k). BasicBlock' a -> Rep1 BasicBlock' a # to1 :: forall (a :: k). Rep1 BasicBlock' a -> BasicBlock' a # | |
Data lab => Data (BasicBlock' lab) Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BasicBlock' lab -> c (BasicBlock' lab) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (BasicBlock' lab) # toConstr :: BasicBlock' lab -> Constr # dataTypeOf :: BasicBlock' lab -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (BasicBlock' lab)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (BasicBlock' lab)) # gmapT :: (forall b. Data b => b -> b) -> BasicBlock' lab -> BasicBlock' lab # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BasicBlock' lab -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BasicBlock' lab -> r # gmapQ :: (forall d. Data d => d -> u) -> BasicBlock' lab -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> BasicBlock' lab -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BasicBlock' lab -> m (BasicBlock' lab) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BasicBlock' lab -> m (BasicBlock' lab) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BasicBlock' lab -> m (BasicBlock' lab) # | |
Generic (BasicBlock' lab) Source # | |
Defined in Text.LLVM.AST Associated Types type Rep (BasicBlock' lab) :: Type -> Type # Methods from :: BasicBlock' lab -> Rep (BasicBlock' lab) x # to :: Rep (BasicBlock' lab) x -> BasicBlock' lab # | |
Show lab => Show (BasicBlock' lab) Source # | |
Defined in Text.LLVM.AST Methods showsPrec :: Int -> BasicBlock' lab -> ShowS # show :: BasicBlock' lab -> String # showList :: [BasicBlock' lab] -> ShowS # | |
Eq lab => Eq (BasicBlock' lab) Source # | |
Defined in Text.LLVM.AST Methods (==) :: BasicBlock' lab -> BasicBlock' lab -> Bool # (/=) :: BasicBlock' lab -> BasicBlock' lab -> Bool # | |
Ord lab => Ord (BasicBlock' lab) Source # | |
Defined in Text.LLVM.AST Methods compare :: BasicBlock' lab -> BasicBlock' lab -> Ordering # (<) :: BasicBlock' lab -> BasicBlock' lab -> Bool # (<=) :: BasicBlock' lab -> BasicBlock' lab -> Bool # (>) :: BasicBlock' lab -> BasicBlock' lab -> Bool # (>=) :: BasicBlock' lab -> BasicBlock' lab -> Bool # max :: BasicBlock' lab -> BasicBlock' lab -> BasicBlock' lab # min :: BasicBlock' lab -> BasicBlock' lab -> BasicBlock' lab # | |
type Rep1 BasicBlock' Source # | |
Defined in Text.LLVM.AST type Rep1 BasicBlock' = D1 ('MetaData "BasicBlock'" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "BasicBlock" 'PrefixI 'True) (S1 ('MetaSel ('Just "bbLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 Maybe) :*: S1 ('MetaSel ('Just "bbStmts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (List :.: Rec1 Stmt'))) | |
type Rep (BasicBlock' lab) Source # | |
Defined in Text.LLVM.AST type Rep (BasicBlock' lab) = D1 ('MetaData "BasicBlock'" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "BasicBlock" 'PrefixI 'True) (S1 ('MetaSel ('Just "bbLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe lab)) :*: S1 ('MetaSel ('Just "bbStmts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt' lab]))) |
type BasicBlock = BasicBlock' BlockLabel Source #
brTargets :: BasicBlock' lab -> [lab] Source #
Attributes
Symbol Linkage
Constructors
Private | |
LinkerPrivate | |
LinkerPrivateWeak | |
LinkerPrivateWeakDefAuto | |
Internal | |
AvailableExternally | |
Linkonce | |
Weak | |
Common | |
Appending | |
ExternWeak | |
LinkonceODR | |
WeakODR | |
External | |
DLLImport | |
DLLExport |
Instances
Data Linkage Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Linkage -> c Linkage # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Linkage # toConstr :: Linkage -> Constr # dataTypeOf :: Linkage -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Linkage) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Linkage) # gmapT :: (forall b. Data b => b -> b) -> Linkage -> Linkage # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Linkage -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Linkage -> r # gmapQ :: (forall d. Data d => d -> u) -> Linkage -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Linkage -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Linkage -> m Linkage # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Linkage -> m Linkage # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Linkage -> m Linkage # | |
Enum Linkage Source # | |
Generic Linkage Source # | |
Show Linkage Source # | |
Eq Linkage Source # | |
Ord Linkage Source # | |
type Rep Linkage Source # | |
Defined in Text.LLVM.AST type Rep Linkage = D1 ('MetaData "Linkage" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) ((((C1 ('MetaCons "Private" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LinkerPrivate" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LinkerPrivateWeak" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LinkerPrivateWeakDefAuto" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Internal" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AvailableExternally" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Linkonce" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Weak" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "Common" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Appending" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExternWeak" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LinkonceODR" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "WeakODR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "External" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DLLImport" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DLLExport" 'PrefixI 'False) (U1 :: Type -> Type))))) |
data Visibility Source #
Constructors
DefaultVisibility | |
HiddenVisibility | |
ProtectedVisibility |
Instances
Data Visibility Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Visibility -> c Visibility # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Visibility # toConstr :: Visibility -> Constr # dataTypeOf :: Visibility -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Visibility) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Visibility) # gmapT :: (forall b. Data b => b -> b) -> Visibility -> Visibility # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Visibility -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Visibility -> r # gmapQ :: (forall d. Data d => d -> u) -> Visibility -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Visibility -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Visibility -> m Visibility # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Visibility -> m Visibility # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Visibility -> m Visibility # | |
Generic Visibility Source # | |
Defined in Text.LLVM.AST Associated Types type Rep Visibility :: Type -> Type # | |
Show Visibility Source # | |
Defined in Text.LLVM.AST Methods showsPrec :: Int -> Visibility -> ShowS # show :: Visibility -> String # showList :: [Visibility] -> ShowS # | |
Eq Visibility Source # | |
Defined in Text.LLVM.AST | |
Ord Visibility Source # | |
Defined in Text.LLVM.AST Methods compare :: Visibility -> Visibility -> Ordering # (<) :: Visibility -> Visibility -> Bool # (<=) :: Visibility -> Visibility -> Bool # (>) :: Visibility -> Visibility -> Bool # (>=) :: Visibility -> Visibility -> Bool # max :: Visibility -> Visibility -> Visibility # min :: Visibility -> Visibility -> Visibility # | |
type Rep Visibility Source # | |
Defined in Text.LLVM.AST type Rep Visibility = D1 ('MetaData "Visibility" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "DefaultVisibility" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "HiddenVisibility" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ProtectedVisibility" 'PrefixI 'False) (U1 :: Type -> Type))) |
Instances
Data GC Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GC -> c GC # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c GC # dataTypeOf :: GC -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c GC) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c GC) # gmapT :: (forall b. Data b => b -> b) -> GC -> GC # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GC -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GC -> r # gmapQ :: (forall d. Data d => d -> u) -> GC -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> GC -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> GC -> m GC # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GC -> m GC # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GC -> m GC # | |
Generic GC Source # | |
Show GC Source # | |
Eq GC Source # | |
Ord GC Source # | |
type Rep GC Source # | |
Defined in Text.LLVM.AST |
Typed Things
Constructors
Typed | |
Fields
|
Instances
Foldable Typed Source # | |
Defined in Text.LLVM.AST Methods fold :: Monoid m => Typed m -> m # foldMap :: Monoid m => (a -> m) -> Typed a -> m # foldMap' :: Monoid m => (a -> m) -> Typed a -> m # foldr :: (a -> b -> b) -> b -> Typed a -> b # foldr' :: (a -> b -> b) -> b -> Typed a -> b # foldl :: (b -> a -> b) -> b -> Typed a -> b # foldl' :: (b -> a -> b) -> b -> Typed a -> b # foldr1 :: (a -> a -> a) -> Typed a -> a # foldl1 :: (a -> a -> a) -> Typed a -> a # elem :: Eq a => a -> Typed a -> Bool # maximum :: Ord a => Typed a -> a # minimum :: Ord a => Typed a -> a # | |
Traversable Typed Source # | |
Functor Typed Source # | |
Generic1 Typed Source # | |
DefineArgs Type (Typed Value -> BB ()) Source # | |
Data a => Data (Typed a) Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Typed a -> c (Typed a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Typed a) # toConstr :: Typed a -> Constr # dataTypeOf :: Typed a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Typed a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Typed a)) # gmapT :: (forall b. Data b => b -> b) -> Typed a -> Typed a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Typed a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Typed a -> r # gmapQ :: (forall d. Data d => d -> u) -> Typed a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Typed a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Typed a -> m (Typed a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Typed a -> m (Typed a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Typed a -> m (Typed a) # | |
Generic (Typed a) Source # | |
Show a => Show (Typed a) Source # | |
Eq a => Eq (Typed a) Source # | |
Ord a => Ord (Typed a) Source # | |
IsValue a => IsValue (Typed a) Source # | |
DefineArgs as k => DefineArgs (Type :> as) (Typed Value -> k) Source # | |
DefineArgs (Type, Type) (Typed Value -> Typed Value -> BB ()) Source # | |
DefineArgs (Type, Type, Type) (Typed Value -> Typed Value -> Typed Value -> BB ()) Source # | |
type Rep1 Typed Source # | |
Defined in Text.LLVM.AST type Rep1 Typed = D1 ('MetaData "Typed" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "Typed" 'PrefixI 'True) (S1 ('MetaSel ('Just "typedType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Just "typedValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) | |
type Rep (Typed a) Source # | |
Defined in Text.LLVM.AST type Rep (Typed a) = D1 ('MetaData "Typed" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "Typed" 'PrefixI 'True) (S1 ('MetaSel ('Just "typedType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Just "typedValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) |
Instructions
Constructors
Add Bool Bool |
|
FAdd | Floating point addition. |
Sub Bool Bool |
|
FSub | Floating point subtraction. |
Mul Bool Bool |
|
FMul | Floating point multiplication. |
UDiv Bool |
|
SDiv Bool |
|
FDiv | Floating point division. |
URem | Integral unsigned reminder resulting from unsigned division. Division by 0 is undefined. |
SRem |
|
FRem |
|
Instances
data UnaryArithOp Source #
Constructors
FNeg | Floating point negation. |
Instances
Binary bitwise operators.
Constructors
Shl Bool Bool |
|
Lshr Bool |
The value of the second parameter must be strictly less than the number of bits in the first parameter, otherwise the result is undefined. |
Ashr Bool |
The value of the second parameter must be strictly less than the number of bits in the first parameter, otherwise the result is undefined. |
And | |
Or | |
Xor |
Instances
Data BitOp Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BitOp -> c BitOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BitOp # dataTypeOf :: BitOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BitOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BitOp) # gmapT :: (forall b. Data b => b -> b) -> BitOp -> BitOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BitOp -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BitOp -> r # gmapQ :: (forall d. Data d => d -> u) -> BitOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> BitOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BitOp -> m BitOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BitOp -> m BitOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BitOp -> m BitOp # | |
Generic BitOp Source # | |
Show BitOp Source # | |
Eq BitOp Source # | |
Ord BitOp Source # | |
type Rep BitOp Source # | |
Defined in Text.LLVM.AST type Rep BitOp = D1 ('MetaData "BitOp" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) ((C1 ('MetaCons "Shl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: (C1 ('MetaCons "Lshr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: C1 ('MetaCons "Ashr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :+: (C1 ('MetaCons "And" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Or" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Xor" 'PrefixI 'False) (U1 :: Type -> Type)))) |
Conversions from one type to another.
Instances
Data ConvOp Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ConvOp -> c ConvOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ConvOp # toConstr :: ConvOp -> Constr # dataTypeOf :: ConvOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ConvOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ConvOp) # gmapT :: (forall b. Data b => b -> b) -> ConvOp -> ConvOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ConvOp -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ConvOp -> r # gmapQ :: (forall d. Data d => d -> u) -> ConvOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ConvOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ConvOp -> m ConvOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ConvOp -> m ConvOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ConvOp -> m ConvOp # | |
Enum ConvOp Source # | |
Defined in Text.LLVM.AST | |
Generic ConvOp Source # | |
Show ConvOp Source # | |
Eq ConvOp Source # | |
Ord ConvOp Source # | |
type Rep ConvOp Source # | |
Defined in Text.LLVM.AST type Rep ConvOp = D1 ('MetaData "ConvOp" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (((C1 ('MetaCons "Trunc" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ZExt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SExt" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "FpTrunc" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FpExt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FpToUi" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "FpToSi" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "UiToFp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SiToFp" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "PtrToInt" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "IntToPtr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BitCast" 'PrefixI 'False) (U1 :: Type -> Type))))) |
data AtomicRWOp Source #
Constructors
AtomicXchg | |
AtomicAdd | |
AtomicSub | |
AtomicAnd | |
AtomicNand | |
AtomicOr | |
AtomicXor | |
AtomicMax | |
AtomicMin | |
AtomicUMax | |
AtomicUMin | |
AtomicFAdd | Introduced in LLVM 9 |
AtomicFSub | Introduced in LLVM 9 |
AtomicFMax | Introduced in LLVM 15 |
AtomicFMin | Introduced in LLVM 15 |
AtomicUIncWrap | Introduced in LLVM 16 |
AtomicUDecWrap | Introduced in LLVM 16 |
Instances
data AtomicOrdering Source #
Instances
Constructors
Ret (Typed (Value' lab)) |
|
RetVoid |
|
Arith ArithOp (Typed (Value' lab)) (Value' lab) |
|
UnaryArith UnaryArithOp (Typed (Value' lab)) |
|
Bit BitOp (Typed (Value' lab)) (Value' lab) |
|
Conv ConvOp (Typed (Value' lab)) Type |
|
Call Bool Type (Value' lab) [Typed (Value' lab)] |
|
CallBr Type (Value' lab) [Typed (Value' lab)] lab [lab] |
|
Alloca Type (Maybe (Typed (Value' lab))) (Maybe Int) |
|
Load Type (Typed (Value' lab)) (Maybe AtomicOrdering) (Maybe Align) |
|
Store (Typed (Value' lab)) (Typed (Value' lab)) (Maybe AtomicOrdering) (Maybe Align) |
|
Fence (Maybe String) AtomicOrdering |
|
CmpXchg Bool Bool (Typed (Value' lab)) (Typed (Value' lab)) (Typed (Value' lab)) (Maybe String) AtomicOrdering AtomicOrdering |
|
AtomicRW Bool AtomicRWOp (Typed (Value' lab)) (Typed (Value' lab)) (Maybe String) AtomicOrdering |
|
ICmp ICmpOp (Typed (Value' lab)) (Value' lab) |
|
FCmp FCmpOp (Typed (Value' lab)) (Value' lab) |
|
Phi Type [(Value' lab, lab)] |
|
GEP Bool Type (Typed (Value' lab)) [Typed (Value' lab)] |
The types in path are the types of the index, not the fields. The indexes are in units of fields (i.e., the first element in a struct is field 0, the next one is 1, etc., regardless of the size of the fields in bytes). |
Select (Typed (Value' lab)) (Typed (Value' lab)) (Value' lab) |
|
ExtractValue (Typed (Value' lab)) [Int32] |
|
InsertValue (Typed (Value' lab)) (Typed (Value' lab)) [Int32] |
|
ExtractElt (Typed (Value' lab)) (Value' lab) |
|
InsertElt (Typed (Value' lab)) (Typed (Value' lab)) (Value' lab) |
|
ShuffleVector (Typed (Value' lab)) (Value' lab) (Typed (Value' lab)) |
|
Jump lab |
|
Br (Typed (Value' lab)) lab lab |
|
Invoke Type (Value' lab) [Typed (Value' lab)] lab lab |
|
Comment String | Comment |
Unreachable | No defined sematics, we should not get to here. |
Unwind | |
VaArg (Typed (Value' lab)) Type | Accesses arguments passed through "varargs" areas of a function call.
The argument is a |
IndirectBr (Typed (Value' lab)) [lab] | Branch via pointer indirection. The argument is the address of the label to jump to. (All) Possible destination targets are provided. |
Switch (Typed (Value' lab)) lab [(Integer, lab)] |
|
LandingPad Type (Maybe (Typed (Value' lab))) Bool [Clause' lab] | Target of an exception (from the |
Resume (Typed (Value' lab)) | Resumes propagation of an in-flight exception whose unwinding was
interrupted by a |
Freeze (Typed (Value' lab)) |
|
Instances
type Instr = Instr' BlockLabel Source #
Instances
Functor Clause' Source # | |
HasLabel Clause' Source # | |
Defined in Text.LLVM.Labels | |
Generic1 Clause' Source # | |
Data lab => Data (Clause' lab) Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Clause' lab -> c (Clause' lab) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Clause' lab) # toConstr :: Clause' lab -> Constr # dataTypeOf :: Clause' lab -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Clause' lab)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Clause' lab)) # gmapT :: (forall b. Data b => b -> b) -> Clause' lab -> Clause' lab # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Clause' lab -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Clause' lab -> r # gmapQ :: (forall d. Data d => d -> u) -> Clause' lab -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Clause' lab -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Clause' lab -> m (Clause' lab) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Clause' lab -> m (Clause' lab) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Clause' lab -> m (Clause' lab) # | |
Generic (Clause' lab) Source # | |
Show lab => Show (Clause' lab) Source # | |
Eq lab => Eq (Clause' lab) Source # | |
Ord lab => Ord (Clause' lab) Source # | |
Defined in Text.LLVM.AST | |
type Rep1 Clause' Source # | |
Defined in Text.LLVM.AST type Rep1 Clause' = D1 ('MetaData "Clause'" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "Catch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Typed :.: Rec1 Value')) :+: C1 ('MetaCons "Filter" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Typed :.: Rec1 Value'))) | |
type Rep (Clause' lab) Source # | |
Defined in Text.LLVM.AST type Rep (Clause' lab) = D1 ('MetaData "Clause'" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "Catch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Typed (Value' lab)))) :+: C1 ('MetaCons "Filter" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Typed (Value' lab))))) |
type Clause = Clause' BlockLabel Source #
isTerminator :: Instr' lab -> Bool Source #
Integer comparison operators.
Instances
Data ICmpOp Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ICmpOp -> c ICmpOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ICmpOp # toConstr :: ICmpOp -> Constr # dataTypeOf :: ICmpOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ICmpOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ICmpOp) # gmapT :: (forall b. Data b => b -> b) -> ICmpOp -> ICmpOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ICmpOp -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ICmpOp -> r # gmapQ :: (forall d. Data d => d -> u) -> ICmpOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ICmpOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ICmpOp -> m ICmpOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ICmpOp -> m ICmpOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ICmpOp -> m ICmpOp # | |
Enum ICmpOp Source # | |
Defined in Text.LLVM.AST | |
Generic ICmpOp Source # | |
Show ICmpOp Source # | |
Eq ICmpOp Source # | |
Ord ICmpOp Source # | |
type Rep ICmpOp Source # | |
Defined in Text.LLVM.AST type Rep ICmpOp = D1 ('MetaData "ICmpOp" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (((C1 ('MetaCons "Ieq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Ine" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Iugt" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Iuge" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Iult" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "Iule" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Isgt" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Isge" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Islt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Isle" 'PrefixI 'False) (U1 :: Type -> Type))))) |
Floating-point comparison operators.
Instances
Data FCmpOp Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FCmpOp -> c FCmpOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FCmpOp # toConstr :: FCmpOp -> Constr # dataTypeOf :: FCmpOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FCmpOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FCmpOp) # gmapT :: (forall b. Data b => b -> b) -> FCmpOp -> FCmpOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FCmpOp -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FCmpOp -> r # gmapQ :: (forall d. Data d => d -> u) -> FCmpOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FCmpOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FCmpOp -> m FCmpOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FCmpOp -> m FCmpOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FCmpOp -> m FCmpOp # | |
Enum FCmpOp Source # | |
Defined in Text.LLVM.AST | |
Generic FCmpOp Source # | |
Show FCmpOp Source # | |
Eq FCmpOp Source # | |
Ord FCmpOp Source # | |
type Rep FCmpOp Source # | |
Defined in Text.LLVM.AST type Rep FCmpOp = D1 ('MetaData "FCmpOp" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) ((((C1 ('MetaCons "Ffalse" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Foeq" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Fogt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Foge" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Folt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Fole" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Fone" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Ford" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "Fueq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Fugt" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Fuge" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Fult" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Fule" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Fune" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Funo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Ftrue" 'PrefixI 'False) (U1 :: Type -> Type))))) |
Values
Constructors
ValInteger Integer | |
ValBool Bool | |
ValFloat Float | |
ValDouble Double | |
ValFP80 FP80Value | |
ValIdent Ident | |
ValSymbol Symbol | |
ValNull | |
ValArray Type [Value' lab] | |
ValVector Type [Value' lab] | |
ValStruct [Typed (Value' lab)] | |
ValPackedStruct [Typed (Value' lab)] | |
ValString [Word8] | |
ValConstExpr (ConstExpr' lab) | |
ValUndef | |
ValLabel lab | |
ValZeroInit | |
ValAsm Bool Bool String String | |
ValMd (ValMd' lab) | |
ValPoison |
Instances
type Value = Value' BlockLabel Source #
Constructors
FP80_LongDouble Word16 Word64 |
Instances
Data FP80Value Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FP80Value -> c FP80Value # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FP80Value # toConstr :: FP80Value -> Constr # dataTypeOf :: FP80Value -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FP80Value) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FP80Value) # gmapT :: (forall b. Data b => b -> b) -> FP80Value -> FP80Value # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FP80Value -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FP80Value -> r # gmapQ :: (forall d. Data d => d -> u) -> FP80Value -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FP80Value -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FP80Value -> m FP80Value # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FP80Value -> m FP80Value # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FP80Value -> m FP80Value # | |
Generic FP80Value Source # | |
Show FP80Value Source # | |
Eq FP80Value Source # | |
Ord FP80Value Source # | |
type Rep FP80Value Source # | |
Defined in Text.LLVM.AST type Rep FP80Value = D1 ('MetaData "FP80Value" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "FP80_LongDouble" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word16) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64))) |
Constructors
ValMdString String | |
ValMdValue (Typed (Value' lab)) | |
ValMdRef Int | |
ValMdNode [Maybe (ValMd' lab)] | |
ValMdLoc (DebugLoc' lab) | |
ValMdDebugInfo (DebugInfo' lab) |
Instances
type ValMd = ValMd' BlockLabel Source #
Constructors
DebugLoc | |
Instances
type DebugLoc = DebugLoc' BlockLabel Source #
Value Elimination
Statements
Constructors
Result Ident (Instr' lab) [(String, ValMd' lab)] | |
Effect (Instr' lab) [(String, ValMd' lab)] |
Instances
type Stmt = Stmt' BlockLabel Source #
Constant Expressions
data ConstExpr' lab Source #
Constructors
ConstGEP Bool (Maybe Word64) Type (Typed (Value' lab)) [Typed (Value' lab)] | Since LLVM 3.7, constant |
ConstConv ConvOp (Typed (Value' lab)) Type | |
ConstSelect (Typed (Value' lab)) (Typed (Value' lab)) (Typed (Value' lab)) | |
ConstBlockAddr (Typed (Value' lab)) lab | |
ConstFCmp FCmpOp (Typed (Value' lab)) (Typed (Value' lab)) | |
ConstICmp ICmpOp (Typed (Value' lab)) (Typed (Value' lab)) | |
ConstArith ArithOp (Typed (Value' lab)) (Value' lab) | |
ConstUnaryArith UnaryArithOp (Typed (Value' lab)) | |
ConstBit BitOp (Typed (Value' lab)) (Value' lab) |
Instances
type ConstExpr = ConstExpr' BlockLabel Source #
DWARF Debug Info
data DebugInfo' lab Source #
Constructors
Instances
type DebugInfo = DebugInfo' BlockLabel Source #
type DILabel = DILabel' BlockLabel Source #
Constructors
DILabel | |
Instances
Functor DILabel' Source # | |
HasLabel DILabel' Source # | |
Defined in Text.LLVM.Labels | |
Generic1 DILabel' Source # | |
Data lab => Data (DILabel' lab) Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DILabel' lab -> c (DILabel' lab) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (DILabel' lab) # toConstr :: DILabel' lab -> Constr # dataTypeOf :: DILabel' lab -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (DILabel' lab)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (DILabel' lab)) # gmapT :: (forall b. Data b => b -> b) -> DILabel' lab -> DILabel' lab # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DILabel' lab -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DILabel' lab -> r # gmapQ :: (forall d. Data d => d -> u) -> DILabel' lab -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> DILabel' lab -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DILabel' lab -> m (DILabel' lab) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DILabel' lab -> m (DILabel' lab) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DILabel' lab -> m (DILabel' lab) # | |
Generic (DILabel' lab) Source # | |
Show lab => Show (DILabel' lab) Source # | |
Eq lab => Eq (DILabel' lab) Source # | |
Ord lab => Ord (DILabel' lab) Source # | |
Defined in Text.LLVM.AST | |
type Rep1 DILabel' Source # | |
Defined in Text.LLVM.AST type Rep1 DILabel' = D1 ('MetaData "DILabel'" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "DILabel" 'PrefixI 'True) ((S1 ('MetaSel ('Just "dilScope") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Maybe :.: Rec1 ValMd') :*: S1 ('MetaSel ('Just "dilName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :*: (S1 ('MetaSel ('Just "dilFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Maybe :.: Rec1 ValMd') :*: S1 ('MetaSel ('Just "dilLine") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word32)))) | |
type Rep (DILabel' lab) Source # | |
Defined in Text.LLVM.AST type Rep (DILabel' lab) = D1 ('MetaData "DILabel'" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "DILabel" 'PrefixI 'True) ((S1 ('MetaSel ('Just "dilScope") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ValMd' lab))) :*: S1 ('MetaSel ('Just "dilName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :*: (S1 ('MetaSel ('Just "dilFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ValMd' lab))) :*: S1 ('MetaSel ('Just "dilLine") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word32)))) |
data DIImportedEntity' lab Source #
Constructors
DIImportedEntity | |
Instances
data DITemplateTypeParameter' lab Source #
Constructors
DITemplateTypeParameter | |
Instances
data DITemplateValueParameter' lab Source #
Constructors
DITemplateValueParameter | |
Instances
type DINameSpace = DINameSpace' BlockLabel Source #
data DINameSpace' lab Source #
Constructors
DINameSpace | |
Instances
type DwarfAttrEncoding = Word16 Source #
type DwarfVirtuality = Word8 Source #
type DIEmissionKind = Word8 Source #
data DIBasicType Source #
Constructors
DIBasicType | |
Instances
data DICompileUnit' lab Source #
Constructors
DICompileUnit | |
Fields
|
Instances
type DICompileUnit = DICompileUnit' BlockLabel Source #
data DICompositeType' lab Source #
Constructors
DICompositeType | |
Fields
|
Instances
data DIDerivedType' lab Source #
Constructors
DIDerivedType | |
Fields
|
Instances
type DIDerivedType = DIDerivedType' BlockLabel Source #
data DIExpression Source #
Constructors
DIExpression | |
Fields
|
Instances
Constructors
DIFile | |
Fields |
Instances
Data DIFile Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DIFile -> c DIFile # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DIFile # toConstr :: DIFile -> Constr # dataTypeOf :: DIFile -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DIFile) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DIFile) # gmapT :: (forall b. Data b => b -> b) -> DIFile -> DIFile # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DIFile -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DIFile -> r # gmapQ :: (forall d. Data d => d -> u) -> DIFile -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> DIFile -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DIFile -> m DIFile # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DIFile -> m DIFile # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DIFile -> m DIFile # | |
Generic DIFile Source # | |
Show DIFile Source # | |
Eq DIFile Source # | |
Ord DIFile Source # | |
type Rep DIFile Source # | |
Defined in Text.LLVM.AST type Rep DIFile = D1 ('MetaData "DIFile" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "DIFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "difFilename") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath) :*: S1 ('MetaSel ('Just "difDirectory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath))) |
data DIGlobalVariable' lab Source #
Constructors
DIGlobalVariable | |
Fields
|
Instances
data DIGlobalVariableExpression' lab Source #
Constructors
DIGlobalVariableExpression | |
Fields
|
Instances
data DILexicalBlock' lab Source #
Constructors
DILexicalBlock | |
Instances
data DILexicalBlockFile' lab Source #
Constructors
DILexicalBlockFile | |
Fields
|
Instances
data DILocalVariable' lab Source #
Constructors
DILocalVariable | |
Instances
data DISubprogram' lab Source #
Constructors
DISubprogram | |
Fields
|
Instances
type DISubprogram = DISubprogram' BlockLabel Source #
data DISubrange' lab Source #
The DISubrange is a Value subrange specification, usually associated with arrays or enumerations.
- Early LLVM: only
disrCount
anddisrLowerBound
were present, where both were a direct signed 64-bit value. This corresponds to "format 0" in the bitcode encoding (see reference below). - LLVM 7:
disrCount
changed to metadata representation (Value'
). The metadata representation should only be a signed 64-bit integer, a Variable, or an Expression. This corresponds to "format 1" in the bitcode encoding. - LLVM 11:
disrLowerBound
was changed to a metadata representation anddisrUpperBound
anddisrStride
were added (primarily driven by the addition of Fortran support in llvm). All three should only be represented as a signed 64-bit integer, a Variable, or an Expression. This corresponds to "format 2" in the bitcode encoding. See https://github.com/llvm/llvm-project/commit/d20bf5a for this change.
Also see https://github.com/llvm/llvm-project/blob/bbe8cd1/llvm/lib/Bitcode/Reader/MetadataLoader.cpp#L1435-L1461 for how this is read from the bitcode encoding and the use of the format values mentioned above.
Constructors
DISubrange | |
Fields
|
Instances
type DISubrange = DISubrange' BlockLabel Source #
data DISubroutineType' lab Source #
Constructors
DISubroutineType | |
Fields
|
Instances
newtype DIArgList' lab Source #
Instances
Functor DIArgList' Source # | |
Defined in Text.LLVM.AST Methods fmap :: (a -> b) -> DIArgList' a -> DIArgList' b # (<$) :: a -> DIArgList' b -> DIArgList' a # | |
HasLabel DIArgList' Source # | |
Defined in Text.LLVM.Labels Methods relabel :: Applicative m => (Maybe Symbol -> a -> m b) -> DIArgList' a -> m (DIArgList' b) Source # | |
Generic1 DIArgList' Source # | |
Defined in Text.LLVM.AST Associated Types type Rep1 DIArgList' :: k -> Type # Methods from1 :: forall (a :: k). DIArgList' a -> Rep1 DIArgList' a # to1 :: forall (a :: k). Rep1 DIArgList' a -> DIArgList' a # | |
Data lab => Data (DIArgList' lab) Source # | |
Defined in Text.LLVM.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DIArgList' lab -> c (DIArgList' lab) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (DIArgList' lab) # toConstr :: DIArgList' lab -> Constr # dataTypeOf :: DIArgList' lab -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (DIArgList' lab)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (DIArgList' lab)) # gmapT :: (forall b. Data b => b -> b) -> DIArgList' lab -> DIArgList' lab # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DIArgList' lab -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DIArgList' lab -> r # gmapQ :: (forall d. Data d => d -> u) -> DIArgList' lab -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> DIArgList' lab -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DIArgList' lab -> m (DIArgList' lab) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DIArgList' lab -> m (DIArgList' lab) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DIArgList' lab -> m (DIArgList' lab) # | |
Generic (DIArgList' lab) Source # | |
Defined in Text.LLVM.AST Associated Types type Rep (DIArgList' lab) :: Type -> Type # Methods from :: DIArgList' lab -> Rep (DIArgList' lab) x # to :: Rep (DIArgList' lab) x -> DIArgList' lab # | |
Show lab => Show (DIArgList' lab) Source # | |
Defined in Text.LLVM.AST Methods showsPrec :: Int -> DIArgList' lab -> ShowS # show :: DIArgList' lab -> String # showList :: [DIArgList' lab] -> ShowS # | |
Eq lab => Eq (DIArgList' lab) Source # | |
Defined in Text.LLVM.AST Methods (==) :: DIArgList' lab -> DIArgList' lab -> Bool # (/=) :: DIArgList' lab -> DIArgList' lab -> Bool # | |
Ord lab => Ord (DIArgList' lab) Source # | |
Defined in Text.LLVM.AST Methods compare :: DIArgList' lab -> DIArgList' lab -> Ordering # (<) :: DIArgList' lab -> DIArgList' lab -> Bool # (<=) :: DIArgList' lab -> DIArgList' lab -> Bool # (>) :: DIArgList' lab -> DIArgList' lab -> Bool # (>=) :: DIArgList' lab -> DIArgList' lab -> Bool # max :: DIArgList' lab -> DIArgList' lab -> DIArgList' lab # min :: DIArgList' lab -> DIArgList' lab -> DIArgList' lab # | |
type Rep1 DIArgList' Source # | |
Defined in Text.LLVM.AST type Rep1 DIArgList' = D1 ('MetaData "DIArgList'" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'True) (C1 ('MetaCons "DIArgList" 'PrefixI 'True) (S1 ('MetaSel ('Just "dialArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (List :.: Rec1 ValMd'))) | |
type Rep (DIArgList' lab) Source # | |
Defined in Text.LLVM.AST type Rep (DIArgList' lab) = D1 ('MetaData "DIArgList'" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'True) (C1 ('MetaCons "DIArgList" 'PrefixI 'True) (S1 ('MetaSel ('Just "dialArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ValMd' lab]))) |
type DIArgList = DIArgList' BlockLabel Source #
Aggregate Utilities
data IndexResult Source #
Constructors
Invalid | An invalid use of GEP |
HasType Type | A resolved type |
Resolve Ident (Type -> IndexResult) | Continue, after resolving an alias |
Instances
Generic IndexResult Source # | |
Defined in Text.LLVM.AST Associated Types type Rep IndexResult :: Type -> Type # | |
type Rep IndexResult Source # | |
Defined in Text.LLVM.AST type Rep IndexResult = D1 ('MetaData "IndexResult" "Text.LLVM.AST" "llvm-pretty-0.13.0.0-9fa5SXwoFRhBc2HChVRGtn" 'False) (C1 ('MetaCons "Invalid" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "HasType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "Resolve" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type -> IndexResult))))) |
isInvalid :: IndexResult -> Bool Source #
Arguments
:: (Ident -> Maybe Type) | Type alias resolution |
-> Type | Base type used for calculations |
-> Typed (Value' lab) | Pointer value |
-> [Typed (Value' lab)] | Path |
-> Maybe Type | Type of result |
Resolves the type of a GEP instruction. Type aliases are resolved
using the given function. An invalid use of GEP or one relying
on unknown type aliases will return Nothing
resolveGep :: Type -> Typed (Value' lab) -> [Typed (Value' lab)] -> IndexResult Source #
Resolve the type of a GEP instruction. Note that the type produced is the type of the result, not necessarily a pointer.
resolveGepBody :: Type -> [Typed (Value' lab)] -> IndexResult Source #
Resolve the type of a GEP instruction. This assumes that the input has already been processed as a pointer.
resolveValueIndex :: Type -> [Int32] -> IndexResult Source #