package goblint-cil

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
module H = Hashtbl
module S = String
exception NotConstant
type llvmBlock = {
  1. lblabel : string;
  2. mutable lbbody : llvmInstruction list;
  3. mutable lbterminator : llvmTerminator;
  4. mutable lbpreds : llvmBlock list;
}
and llvmInstruction = {
  1. mutable liresult : llvmLocal option;
  2. liop : llvmOp;
  3. mutable liargs : llvmValue list;
}
and llvmTerminator =
  1. | TUnreachable
  2. | TDead
  3. | TRet of llvmValue list
  4. | TBranch of llvmBlock
  5. | TCond of llvmValue * llvmBlock * llvmBlock
  6. | TSwitch of llvmValue * llvmBlock * (int64 * llvmBlock) list
and llvmValue =
  1. | LGlobal of llvmGlobal
  2. | LLocal of llvmLocal
  3. | LBool of bool
  4. | LInt of int64 * Cil.ikind
  5. | LFloat of float * Cil.fkind
  6. | LUndef
  7. | LZero
  8. | LNull of llvmType
  9. | LPhi of llvmValue * llvmBlock
  10. | LType of llvmType
  11. | LGetelementptr of llvmValue list
  12. | LCast of llvmCast * llvmValue * llvmType
  13. | LBinary of llvmBinop * llvmValue * llvmValue * llvmType
  14. | LCmp of llvmCmp * llvmValue * llvmValue
  15. | LFcmp of llvmFCmp * llvmValue * llvmValue
  16. | LSelect of llvmValue * llvmValue * llvmValue
and llvmLocal = string * llvmType
and llvmGlobal = string * llvmType
and llvmType = Cil.typ
and llvmOp =
  1. | LIassign
  2. | LIphi
  3. | LIgetelementptr
  4. | LIload
  5. | LIstore
  6. | LIcall
  7. | LIalloca
  8. | LIbinary of llvmBinop
  9. | LIcmp of llvmCmp
  10. | LIfcmp of llvmFCmp
  11. | LIselect
  12. | LIcast of llvmCast
  13. | LIva_arg
and llvmBinop =
  1. | LBadd
  2. | LBsub
  3. | LBmul
  4. | LBudiv
  5. | LBsdiv
  6. | LBfdiv
  7. | LBurem
  8. | LBsrem
  9. | LBfrem
  10. | LBshl
  11. | LBlshr
  12. | LBashr
  13. | LBand
  14. | LBor
  15. | LBxor
and llvmCmp =
  1. | LCeq
  2. | LCne
  3. | LCslt
  4. | LCult
  5. | LCsle
  6. | LCule
  7. | LCsgt
  8. | LCugt
  9. | LCsge
  10. | LCuge
and llvmFCmp =
  1. | LCFoeq
  2. | LCFone
  3. | LCFolt
  4. | LCFole
  5. | LCFogt
  6. | LCFoge
  7. | LCFord
  8. | LCFueq
  9. | LCFune
  10. | LCFult
  11. | LCFule
  12. | LCFugt
  13. | LCFuge
and llvmCast =
  1. | LAtrunc
  2. | LAzext
  3. | LAsext
  4. | LAuitofp
  5. | LAsitofp
  6. | LAfptoui
  7. | LAfptosi
  8. | LAfptrunc
  9. | LAfpext
  10. | LAinttoptr
  11. | LAptrtoint
  12. | LAbitcast
val binopName : llvmBinop -> string
val cmpName : llvmCmp -> string
val fcmpName : llvmFCmp -> string
val castName : llvmCast -> string
val i1Type : Cil.typ
val i32Type : Cil.typ
val i8starType : Cil.typ
val llvmTypeOf : llvmValue -> llvmType
val llvmLocalType : Cil.typ -> bool
val llvmUseLocal : Cil.varinfo -> bool
val llvmDoNotUseLocal : Cil.varinfo -> bool
val llvmDestinations : llvmTerminator -> llvmBlock List.t
val llvmValueEqual : llvmValue -> llvmValue -> bool
val llocal : Cil.varinfo -> llvmLocal
val lglobal : Cil.varinfo -> llvmGlobal
val lvar : Cil.varinfo -> llvmValue
val lint : int -> Cil.typ -> llvmValue
val lzero : Cil.typ -> llvmValue
val mkIns : llvmOp -> llvmLocal -> llvmValue list -> llvmInstruction
val mkVoidIns : llvmOp -> llvmValue list -> llvmInstruction
val mkTrueIns : llvmLocal -> llvmValue -> llvmInstruction
val llvmEscape : string -> string
val llvmValueNegate : llvmValue -> llvmValue
val llvmCastOp : Cil.typ -> Cil.typ -> llvmCast
class type llvmGenerator = object ... end