Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
- 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
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 -> Bool
- isPrimTypeOf :: (PrimType -> Bool) -> Type -> Bool
- isLabel :: PrimType -> Bool
- isInteger :: PrimType -> Bool
- isVector :: Type -> Bool
- isVectorOf :: (Type -> Bool) -> Type -> Bool
- isArray :: Type -> Bool
- isPointer :: Type -> 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
Module | |
|
Instances
emptyModule :: Module Source #
Named Metadata
Instances
Data NamedMd Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 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 # | |
Defined in Text.LLVM.AST | |
type Rep UnnamedMd Source # | |
Defined in Text.LLVM.AST type Rep UnnamedMd = D1 ('MetaData "UnnamedMd" "Text.LLVM.AST" "llvm-pretty-0.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
GlobalAlias | |
|
Instances
Data Layout
type DataLayout = [LayoutSpec] Source #
data LayoutSpec Source #
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
Instances
Data Mangling Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 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 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 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 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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 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 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 # | |
Defined in Text.LLVM.AST | |
Lift FloatType Source # | |
type Rep FloatType Source # | |
Defined in Text.LLVM.AST type Rep FloatType = D1 ('MetaData "FloatType" "Text.LLVM.AST" "llvm-pretty-0.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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)))) |
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 #
HasNull (Value' lab) | |
ResolveNull Ident |
Instances
Functor NullResult Source # | |
Defined in Text.LLVM.AST fmap :: (a -> b) -> NullResult a -> NullResult b # (<$) :: a -> NullResult b -> NullResult a # | |
Generic1 NullResult Source # | |
Defined in Text.LLVM.AST type Rep1 NullResult :: k -> Type # 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 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 type Rep (NullResult lab) :: Type -> Type # 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 showsPrec :: Int -> NullResult lab -> ShowS # show :: NullResult lab -> String # showList :: [NullResult lab] -> ShowS # | |
Eq lab => Eq (NullResult lab) Source # | |
Defined in Text.LLVM.AST (==) :: NullResult lab -> NullResult lab -> Bool # (/=) :: NullResult lab -> NullResult lab -> Bool # | |
Ord lab => Ord (NullResult lab) Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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
Instances
Data Global Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
Instances
Declarations
Declare | |
|
Instances
decFunType :: Declare -> Type Source #
The function type of this declaration
Function Definitions
Define | |
|
Instances
defFunType :: Define -> Type Source #
Function Attributes and attribute groups
Instances
Data FunAttr Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
Instances
Functor BasicBlock' Source # | |
Defined in Text.LLVM.AST fmap :: (a -> b) -> BasicBlock' a -> BasicBlock' b # (<$) :: a -> BasicBlock' b -> BasicBlock' a # | |
Generic1 BasicBlock' Source # | |
Defined in Text.LLVM.AST type Rep1 BasicBlock' :: k -> Type # 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 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 type Rep (BasicBlock' lab) :: Type -> Type # 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 showsPrec :: Int -> BasicBlock' lab -> ShowS # show :: BasicBlock' lab -> String # showList :: [BasicBlock' lab] -> ShowS # | |
Eq lab => Eq (BasicBlock' lab) Source # | |
Defined in Text.LLVM.AST (==) :: BasicBlock' lab -> BasicBlock' lab -> Bool # (/=) :: BasicBlock' lab -> BasicBlock' lab -> Bool # | |
Ord lab => Ord (BasicBlock' lab) Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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
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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
Instances
Data Visibility Source # | |
Defined in Text.LLVM.AST 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 type Rep Visibility :: Type -> Type # from :: Visibility -> Rep Visibility x # to :: Rep Visibility x -> Visibility # | |
Show Visibility Source # | |
Defined in Text.LLVM.AST showsPrec :: Int -> Visibility -> ShowS # show :: Visibility -> String # showList :: [Visibility] -> ShowS # | |
Eq Visibility Source # | |
Defined in Text.LLVM.AST (==) :: Visibility -> Visibility -> Bool # (/=) :: Visibility -> Visibility -> Bool # | |
Ord Visibility Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 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
Typed | |
|
Instances
Foldable Typed Source # | |
Defined in Text.LLVM.AST 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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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
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 #
FNeg | Floating point negation. |
Instances
Binary bitwise operators.
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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
AtomicXchg | |
AtomicAdd | |
AtomicSub | |
AtomicAnd | |
AtomicNand | |
AtomicOr | |
AtomicXor | |
AtomicMax | |
AtomicMin | |
AtomicUMax | |
AtomicUMin |
Instances
data AtomicOrdering Source #
Instances
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 | |
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)) |
|
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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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
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 #
Instances
Data FP80Value Source # | |
Defined in Text.LLVM.AST 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 # | |
Defined in Text.LLVM.AST | |
type Rep FP80Value Source # | |
Defined in Text.LLVM.AST type Rep FP80Value = D1 ('MetaData "FP80Value" "Text.LLVM.AST" "llvm-pretty-0.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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))) |
ValMdString String | |
ValMdValue (Typed (Value' lab)) | |
ValMdRef Int | |
ValMdNode [Maybe (ValMd' lab)] | |
ValMdLoc (DebugLoc' lab) | |
ValMdDebugInfo (DebugInfo' lab) |
Instances
type ValMd = ValMd' BlockLabel Source #
Instances
type DebugLoc = DebugLoc' BlockLabel Source #
Value Elimination
Statements
Instances
type Stmt = Stmt' BlockLabel Source #
Constant Expressions
data ConstExpr' lab Source #
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 #
Instances
type DebugInfo = DebugInfo' BlockLabel Source #
type DILabel = DILabel' BlockLabel Source #
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 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
Instances
data DITemplateTypeParameter' lab Source #
Instances
data DITemplateValueParameter' lab Source #
Instances
type DINameSpace = DINameSpace' BlockLabel Source #
data DINameSpace' lab Source #
Instances
type DwarfAttrEncoding = Word16 Source #
type DwarfVirtuality = Word8 Source #
type DIEmissionKind = Word8 Source #
data DIBasicType Source #
Instances
data DICompileUnit' lab Source #
DICompileUnit | |
|
Instances
type DICompileUnit = DICompileUnit' BlockLabel Source #
data DICompositeType' lab Source #
DICompositeType | |
|
Instances
data DIDerivedType' lab Source #
DIDerivedType | |
|
Instances
type DIDerivedType = DIDerivedType' BlockLabel Source #
data DIExpression Source #
Instances
Instances
Data DIFile Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
DIGlobalVariable | |
|
Instances
data DIGlobalVariableExpression' lab Source #
DIGlobalVariableExpression | |
|
Instances
data DILexicalBlock' lab Source #
Instances
data DILexicalBlockFile' lab Source #
DILexicalBlockFile | |
|
Instances
data DILocalVariable' lab Source #
Instances
data DISubprogram' lab Source #
DISubprogram | |
|
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.
DISubrange | |
|
Instances
type DISubrange = DISubrange' BlockLabel Source #
data DISubroutineType' lab Source #
DISubroutineType | |
|
Instances
newtype DIArgList' lab Source #
Instances
Functor DIArgList' Source # | |
Defined in Text.LLVM.AST fmap :: (a -> b) -> DIArgList' a -> DIArgList' b # (<$) :: a -> DIArgList' b -> DIArgList' a # | |
HasLabel DIArgList' Source # | |
Defined in Text.LLVM.Labels relabel :: Applicative m => (Maybe Symbol -> a -> m b) -> DIArgList' a -> m (DIArgList' b) Source # | |
Generic1 DIArgList' Source # | |
Defined in Text.LLVM.AST type Rep1 DIArgList' :: k -> Type # 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 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 type Rep (DIArgList' lab) :: Type -> Type # 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 showsPrec :: Int -> DIArgList' lab -> ShowS # show :: DIArgList' lab -> String # showList :: [DIArgList' lab] -> ShowS # | |
Eq lab => Eq (DIArgList' lab) Source # | |
Defined in Text.LLVM.AST (==) :: DIArgList' lab -> DIArgList' lab -> Bool # (/=) :: DIArgList' lab -> DIArgList' lab -> Bool # | |
Ord lab => Ord (DIArgList' lab) Source # | |
Defined in Text.LLVM.AST 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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
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 type Rep IndexResult :: Type -> Type # from :: IndexResult -> Rep IndexResult x # to :: Rep IndexResult x -> IndexResult # | |
type Rep IndexResult Source # | |
Defined in Text.LLVM.AST type Rep IndexResult = D1 ('MetaData "IndexResult" "Text.LLVM.AST" "llvm-pretty-0.12.0.0-3IOlow5XxzhDT5KTgFPPkh" '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 #
:: (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 #