You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In MyCFG module we have the following re-exporting type definition:
(** Re-exported [Edge.t] with constructors. See [Edge.t] for documentation. *)typeedge = Edge.t=
| AssignofCilType.Lval.t*CilType.Exp.t
| ProcofCilType.Lval.toption*CilType.Exp.t*CilType.Exp.tlist
| EntryofCilType.Fundec.t
| RetofCilType.Exp.toption*CilType.Fundec.t
| TestofCilType.Exp.t*bool
| ASMofstringlist*Edge.asm_out*Edge.asm_in
| VDeclofCilType.Varinfo.t
| Skip
and in Edge module we have the original type definition:
typet =
| AssignofCilType.Lval.t*CilType.Exp.t(** Assignments lval = exp *)
| ProcofCilType.Lval.toption*CilType.Exp.t*CilType.Exp.tlist(** Function calls of the form lva = fexp (e1, e2, ...) *)
| EntryofCilType.Fundec.t(** Entry edge that relates function declaration to function body. You can use * this to initialize the local variables. *)
| RetofCilType.Exp.toption*CilType.Fundec.t(** Return edge is between the return statement, which may optionally contain * a return value, and the function. The result of the call is then * transferred to the function node! *)
| TestofCilType.Exp.t*bool(** The true-branch or false-branch of a conditional exp *)
| ASMofstringlist*asm_out*asm_in(** Inline assembly statements, and the annotations for output and input * variables. *)
| VDeclofCilType.Varinfo.t(** VDecl edge for the variable in varinfo. Whether such an edge is there for all * local variables or only when it is not possible to pull the declaration up, is * determined by alwaysGenerateVarDecl in cabs2cil.ml in CIL. One case in which a VDecl * is always there is for VLA. If there is a VDecl edge, it is where the declaration originally * appeared *)
| Skip [@dead "t.Skip"]
(** This is here for historical reasons. I never use Skip edges! *)
Despite the last documentation comment, we use MyCFG.Skip in various places and it's not marked dead. But the corresponding Edge.Skip variant is marked dead.
This is incorrect, because due to the type re-exporting, it wouldn't be possible to remove Edge.Skip as the two type manifests must match for the code to compile. I suppose reanalyze isn't accounting for this fact.
The text was updated successfully, but these errors were encountered:
Running reanalyze 389dd68 on Goblint goblint/analyzer@a544002 revealed the following.
In
MyCFG
module we have the following re-exporting type definition:and in
Edge
module we have the original type definition:Despite the last documentation comment, we use
MyCFG.Skip
in various places and it's not marked dead. But the correspondingEdge.Skip
variant is marked dead.This is incorrect, because due to the type re-exporting, it wouldn't be possible to remove
Edge.Skip
as the two type manifests must match for the code to compile. I suppose reanalyze isn't accounting for this fact.The text was updated successfully, but these errors were encountered: