Skip to content

Commit 1e2f9c3

Browse files
committed
CHC: add invariant prioritization to the PLocallyInitialized checker
1 parent c140bee commit 1e2f9c3

File tree

4 files changed

+13
-3
lines changed

4 files changed

+13
-3
lines changed

CodeHawk/CHC/cchanalyze/cCHPOCheckInitialized.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ object (self)
278278
| _ ->
279279
let deps = DLocal [invindex; vinv#index] in
280280
let msg =
281-
"local assignment(s) to "
281+
"assignment(s) to "
282282
^ vinfo.vname
283283
^ ": "
284284
^ (String.concat

CodeHawk/CHC/cchanalyze/cCHPOCheckLocallyInitialized.ml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,12 @@ end
249249

250250

251251
let check_locally_initialized (poq:po_query_int) (vinfo: varinfo) (lval:lval) =
252-
let invs = poq#get_invariants 2 in
252+
let f_priority (inv: invariant_int) =
253+
match inv#get_fact with
254+
| NonRelationalFact (_, FInitializedSet _) -> true
255+
| _ -> false in
256+
let invs =
257+
CCHInvariantFact.prioritize_invariants f_priority (poq#get_invariants 2) in
253258
let _ = poq#set_diagnostic_invariants 2 in
254259
let _ =
255260
poq#set_init_vinfo_mem_diagnostic_invariants

CodeHawk/CHC/cchlib/cCHLibTypes.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,7 @@ class type system_settings_int =
873873
method is_value_wrap_around: bool
874874

875875
method set_output_parameter_analysis: unit
876+
method set_undefined_behavior_analysis: unit
876877
method is_undefined_behavior_analysis: bool
877878
method is_output_parameter_analysis: bool
878879

CodeHawk/CHC/cchlib/cCHSettings.ml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,11 @@ object
9898

9999
method is_value_wrap_around = analysis_level = ValueWrapAround
100100

101-
method set_output_parameter_analysis = analysis_kind <- OutputParameterAnalysis
101+
method set_output_parameter_analysis =
102+
analysis_kind <- OutputParameterAnalysis
103+
104+
method set_undefined_behavior_analysis =
105+
analysis_kind <- UndefinedBehaviorAnalysis
102106

103107
method is_undefined_behavior_analysis =
104108
analysis_kind = UndefinedBehaviorAnalysis

0 commit comments

Comments
 (0)