lifting
本頁內容尚未翻譯。
cfamily.Lifted
Section titled “cfamily.Lifted”record Lifted (L : Constructs)An expression with the statements it needs first and the accesses it makes.
cfamily.LiftedList
Section titled “cfamily.LiftedList”record LiftedList (L : Constructs)Expressions with the statements they need first and the accesses they make.
cfamily.Lifted.of
Section titled “cfamily.Lifted.of”def Lifted.of {L : Constructs} (before : List (TypedStmt L)) (e : TypedExpr L) (writes : List (MemoryAccess L)) (reads : List (MemoryAccess L)) : Lifted LAn expression with its statements, writes and reads.
cfamily.Lifted.pure
Section titled “cfamily.Lifted.pure”def Lifted.pure {L : Constructs} (e : TypedExpr L) : Lifted LAn expression that needs nothing first and accesses nothing.
cfamily.LiftedList.empty
Section titled “cfamily.LiftedList.empty”def LiftedList.empty {L : Constructs} : LiftedList LNo expressions.
cfamily.TypedExpr.isLvalue
Section titled “cfamily.TypedExpr.isLvalue”def TypedExpr.isLvalue {L : Constructs} (dialectLvalue : L.expr -> Bool) (e : TypedExpr L) : BoolWhether an expression is an lvalue: a variable, a dereference, a string literal, a member of an lvalue (C11 6.5.2.3p3), or one of the dialect’s that it says is.
cfamily.TypedExpr.isConstLvalue
Section titled “cfamily.TypedExpr.isConstLvalue”def TypedExpr.isConstLvalue {L : Constructs} (e : TypedExpr L) : BoolWhether an lvalue designates a const object (its type, or a member of a const object).
cfamily.TypedExpr.lvalueType
Section titled “cfamily.TypedExpr.lvalueType”def TypedExpr.lvalueType {L : Constructs} (p : Platform) (e : TypedExpr L) : Ty LThe type of an lvalue itself, const kept (taking its address points to it).
cfamily.TypedExpr.accessOf
Section titled “cfamily.TypedExpr.accessOf”def TypedExpr.accessOf {L : Constructs} (lv : TypedExpr L) : MemoryAccess LThe access an lvalue makes: a variable by name, anything else by its location.
cfamily.TypedExpr.readsOf
Section titled “cfamily.TypedExpr.readsOf”def TypedExpr.readsOf {L : Constructs} (dialectLvalue : L.expr -> Bool) (p : Platform) (lv : TypedExpr L) : List (MemoryAccess L)The read of reading an lvalue’s value (an array is not read: it decays to its address).
cfamily.Lifted.both
Section titled “cfamily.Lifted.both”def Lifted.both {L : Constructs} (n : NodeId) (a : Lifted L) (b : Lifted L) (combine : TypedExpr L -> TypedExpr L -> TypedExpr L) : Lifted LTwo unsequenced operands: both their statements (in order), the checks of their accesses after them, and the expression the results combine to.
cfamily.LiftedList.prepend
Section titled “cfamily.LiftedList.prepend”def LiftedList.prepend {L : Constructs} (n : NodeId) (a : Lifted L) (rest : LiftedList L) : LiftedList LAn operand followed by the rest, unsequenced: as Lifted.both, collecting the expressions.
cfamily.Lifted.map
Section titled “cfamily.Lifted.map”def Lifted.map {L : Constructs} (f : TypedExpr L -> TypedExpr L) (a : Lifted L) : Lifted LThe expression changed, the rest kept.
cfamily.Lifted.after
Section titled “cfamily.Lifted.after”def Lifted.after {L : Constructs} (ss : List (TypedStmt L)) (a : Lifted L) : Lifted LStatements to run first, before what the expression already needs.