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
x-maintenance-intent: ["(latest)" "(latest).(latest-1)"] # also keep previous minor version (with two releases per year, always keep a SV-COMP release)
Copy file name to clipboardExpand all lines: goblint.opam.template
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
x-maintenance-intent: ["(latest)" "(latest).(latest-1)"] # also keep previous minor version (with two releases per year, always keep a SV-COMP release)
Copy file name to clipboardExpand all lines: src/analyses/base.ml
+21-5Lines changed: 21 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -821,21 +821,22 @@ struct
821
821
in
822
822
let r =
823
823
(* query functions were no help ... now try with values*)
824
-
match constFold true exp with
824
+
matchexp with(* TODO: support all cases from [constFold true] directly *)
825
825
(* Integer literals *)
826
826
(* seems like constFold already converts CChr to CInt *)
827
827
|Const (CChr x) -> eval_rv ~man st (Const (charConstToInt x)) (* char becomes int, see Cil doc/ISO C 6.4.4.4.10 *)
828
828
|Const (CInt (num,ikind,str)) -> Int (IntDomain.of_const (num,ikind,str)) (* no cast to ikind needed: CIL ensures that the literal fits ikind, either by silently truncating it (!) or having an explicit CastE around this *)
829
+
|Const (CEnum (v, _, _)) -> eval_rv ~man st v (* based on [Cil.constFold true] *)
829
830
|Const (CReal (_,fkind, Some str)) whennot (Cilfacade.isComplexFKind fkind) -> Float (FD.of_string fkind str) (* prefer parsing from string due to higher precision *)
830
831
|Const (CReal (num, fkind, None)) whennot (Cilfacade.isComplexFKind fkind) && num =0.0 -> Float (FD.of_const fkind num) (* constant 0 is ok, CIL creates these for zero-initializers; it is safe across float types *)
831
832
|Const (CReal (_, fkind, None)) whennot (Cilfacade.isComplexFKind fkind) -> assertfalse(* Cil does not create other CReal without string representation *)
Copy file name to clipboardExpand all lines: src/common/util/cilfacade.ml
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -85,7 +85,7 @@ let init () =
85
85
initCIL ();
86
86
removeBranchingOnConstants :=false;
87
87
addReturnOnNoreturnFallthrough :=true;
88
-
lowerConstants :=true;
88
+
lowerConstants :=false; (* disabled to prevent CIL from constFold-ing constant expressions which still need to be checked (e.g. for overflows) *)(* TODO: lowering enum constants, etc should be separate from general constFold in CIL *)
89
89
Mergecil.ignore_merge_conflicts :=true;
90
90
(* lineDirectiveStyle := None; *)
91
91
RmUnused.keepUnused :=true;
@@ -405,11 +405,13 @@ let typeSigBlendAttributes baseAttrs =
0 commit comments