]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/analyzer/ChangeLog
analyzer: add regression test for fixed ICE [PR94028]
[thirdparty/gcc.git] / gcc / analyzer / ChangeLog
CommitLineData
e516294a
DM
12020-03-04 David Malcolm <dmalcolm@redhat.com>
2
3 PR analyzer/93993
4 * region-model.cc (region_model::on_call_pre): Handle
5 BUILT_IN_EXPECT and its variants.
6 (region_model::add_any_constraints_from_ssa_def_stmt): Split out
7 gassign handling into add_any_constraints_from_gassign; add gcall
8 handling.
9 (region_model::add_any_constraints_from_gassign): New function,
10 based on the above. Add handling for NOP_EXPR.
11 (region_model::add_any_constraints_from_gcall): New function.
12 (region_model::get_representative_path_var): Handle views.
13 * region-model.h
14 (region_model::add_any_constraints_from_ssa_def_stmt): New decl.
15 (region_model::add_any_constraints_from_gassign): New decl.
16
3d66e153
DM
172020-03-04 David Malcolm <dmalcolm@redhat.com>
18
19 PR analyzer/93993
20 * checker-path.h (state_change_event::get_lvalue): Add ctxt param
21 and pass it to region_model::get_value call.
22 * diagnostic-manager.cc (get_any_origin): Pass a
23 tentative_region_model_context to the calls to get_lvalue and reject
24 the comparison if errors occur.
25 (can_be_expr_of_interest_p): New function.
26 (diagnostic_manager::prune_for_sm_diagnostic): Replace checks for
27 CONSTANT_CLASS_P with calls to update_for_unsuitable_sm_exprs.
28 Pass a tentative_region_model_context to the calls to
29 state_change_event::get_lvalue and reject the comparison if errors
30 occur.
31 (diagnostic_manager::update_for_unsuitable_sm_exprs): New.
32 * diagnostic-manager.h
33 (diagnostic_manager::update_for_unsuitable_sm_exprs): New decl.
34 * region-model.h (class tentative_region_model_context): New class.
35
13e3ba14
DM
362020-03-04 David Malcolm <dmalcolm@redhat.com>
37
38 * engine.cc (worklist::worklist): Remove unused field m_eg.
39 (class viz_callgraph_edge): Remove unused field m_call_sedge.
40 (class viz_callgraph): Remove unused field m_sg.
41 * exploded-graph.h (worklist::::m_eg): Remove unused field.
42
13b76912
DM
432020-03-02 David Malcolm <dmalcolm@redhat.com>
44
45 * analyzer.opt (fanalyzer-show-duplicate-count): New option.
46 * diagnostic-manager.cc
47 (diagnostic_manager::emit_saved_diagnostic): Use the above to
48 guard the printing of the duplicate count.
49
9f00b22f
DM
502020-03-02 David Malcolm <dmalcolm@redhat.com>
51
52 PR analyzer/93959
53 * analyzer.cc (is_std_function_p): New function.
54 (is_std_named_call_p): New functions.
55 * analyzer.h (is_std_named_call_p): New decl.
56 * sm-malloc.cc (malloc_state_machine::on_stmt): Check for "std::"
57 variants when checking for malloc, calloc and free.
58
71b633aa
DM
592020-02-26 David Malcolm <dmalcolm@redhat.com>
60
61 PR analyzer/93950
62 * diagnostic-manager.cc
63 (diagnostic_manager::prune_for_sm_diagnostic): Assert that var is
64 either NULL or not a constant. When updating var, bulletproof
65 against constant values.
66
0ba70d1b
DM
672020-02-26 David Malcolm <dmalcolm@redhat.com>
68
69 PR analyzer/93947
70 * region-model.cc (region_model::get_fndecl_for_call): Gracefully
71 fail for fn_decls that don't have a cgraph_node.
72
67fa274c
DM
732020-02-26 David Malcolm <dmalcolm@redhat.com>
74
75 * bar-chart.cc: New file.
76 * bar-chart.h: New file.
77 * engine.cc: Include "analyzer/bar-chart.h".
78 (stats::log): Only log the m_num_nodes kinds that are non-zero.
79 (stats::dump): Likewise when dumping.
80 (stats::get_total_enodes): New.
81 (exploded_graph::get_or_create_node): Increment the per-point-data
82 m_excess_enodes when hitting the per-program-point limit on
83 enodes.
84 (exploded_graph::print_bar_charts): New.
85 (exploded_graph::log_stats): Log the number of unprocessed enodes
86 in the worklist. Call print_bar_charts.
87 (exploded_graph::dump_stats): Print the number of unprocessed
88 enodes in the worklist.
89 * exploded-graph.h (stats::get_total_enodes): New decl.
90 (struct per_program_point_data): Add field m_excess_enodes.
91 (exploded_graph::print_bar_charts): New decl.
92 * supergraph.cc (superedge::dump): New.
93 (superedge::dump): New.
94 * supergraph.h (supernode::get_function): New.
95 (superedge::dump): New decl.
96 (superedge::dump): New decl.
97
f2ca2088
DM
982020-02-24 David Malcolm <dmalcolm@redhat.com>
99
100 * engine.cc (exploded_graph::get_or_create_node): Dump the
101 program_state to the pp, rather than to stderr.
102
b3d788a2
DM
1032020-02-24 David Malcolm <dmalcolm@redhat.com>
104
105 PR analyzer/93032
106 * sm.cc (make_checkers): Require the "taint" checker to be
107 explicitly enabled.
108
3a25f345
DM
1092020-02-24 David Malcolm <dmalcolm@redhat.com>
110
111 PR analyzer/93899
112 * engine.cc
113 (impl_region_model_context::impl_region_model_context): Add logger
114 param.
115 * engine.cc (exploded_graph::add_function_entry): Create an
116 impl_region_model_context and pass it to the push_frame call.
117 Bail if the resulting state is invalid.
118 (exploded_graph::build_initial_worklist): Likewise.
119 (exploded_graph::build_initial_worklist): Handle the case where
120 add_function_entry fails.
121 * exploded-graph.h
122 (impl_region_model_context::impl_region_model_context): Add logger
123 param.
124 * region-model.cc (map_region::get_or_create): Add ctxt param and
125 pass it to add_region_for_type.
126 (map_region::can_merge_p): Pass NULL as a ctxt to call to
127 get_or_create.
128 (array_region::get_element): Pass ctxt to call to get_or_create.
129 (array_region::get_or_create): Add ctxt param and pass it to
130 add_region_for_type.
131 (root_region::push_frame): Pass ctxt to get_or_create calls.
132 (region_model::get_lvalue_1): Likewise.
133 (region_model::make_region_for_unexpected_tree_code): Assert that
134 ctxt is non-NULL.
135 (region_model::get_rvalue_1): Pass ctxt to get_svalue_for_fndecl
136 and get_svalue_for_label calls.
137 (region_model::get_svalue_for_fndecl): Add ctxt param and pass it
138 to get_region_for_fndecl.
139 (region_model::get_region_for_fndecl): Add ctxt param and pass it
140 to get_or_create.
141 (region_model::get_svalue_for_label): Add ctxt param and pass it
142 to get_region_for_label.
143 (region_model::get_region_for_label): Add ctxt param and pass it
144 to get_region_for_fndecl and get_or_create.
145 (region_model::get_field_region): Add ctxt param and pass it to
146 get_or_create_view and get_or_create.
147 (make_region_for_type): Replace gcc_unreachable with return NULL.
148 (region_model::add_region_for_type): Add ctxt param. Handle a
149 return of NULL from make_region_for_type by calling
150 make_region_for_unexpected_tree_code.
151 (region_model::get_or_create_mem_ref): Pass ctxt to calls to
152 get_or_create_view.
153 (region_model::get_or_create_view): Add ctxt param and pass it to
154 add_region_for_type.
155 (selftest::test_state_merging): Pass ctxt to get_or_create_view.
156 * region-model.h (region_model::get_or_create): Add ctxt param.
157 (region_model::add_region_for_type): Likewise.
158 (region_model::get_svalue_for_fndecl): Likewise.
159 (region_model::get_svalue_for_label): Likewise.
160 (region_model::get_region_for_fndecl): Likewise.
161 (region_model::get_region_for_label): Likewise.
162 (region_model::get_field_region): Likewise.
163 (region_model::get_or_create_view): Likewise.
164
004f2c07
DM
1652020-02-24 David Malcolm <dmalcolm@redhat.com>
166
167 * checker-path.cc (superedge_event::should_filter_p): Update
168 filter for empty descriptions to cover verbosity level 3 as well
169 as 2.
170 * diagnostic-manager.cc: Include "analyzer/reachability.h".
171 (class path_builder): New class.
172 (diagnostic_manager::emit_saved_diagnostic): Create a path_builder
173 and pass it to build_emission_path, rather passing eg; similarly
174 for add_events_for_eedge and ext_state.
175 (diagnostic_manager::build_emission_path): Replace "eg" param
176 with a path_builder, pass it to add_events_for_eedge.
177 (diagnostic_manager::add_events_for_eedge): Replace ext_state
178 param with path_builder; pass it to add_events_for_superedge.
179 (diagnostic_manager::significant_edge_p): New.
180 (diagnostic_manager::add_events_for_superedge): Add path_builder
181 param. Reject insignificant edges at verbosity levels below 3.
182 (diagnostic_manager::prune_for_sm_diagnostic): Update highest
183 verbosity level to 4.
184 * diagnostic-manager.h (class path_builder): New forward decl.
185 (diagnostic_manager::build_emission_path): Replace "eg" param
186 with a path_builder.
187 (diagnostic_manager::add_events_for_eedge): Replace ext_state
188 param with path_builder.
189 (diagnostic_manager::significant_edge_p): New.
190 (diagnostic_manager::add_events_for_superedge): Add path_builder
191 param.
192 * reachability.h: New file.
193
0b2b45a6
DM
1942020-02-18 David Malcolm <dmalcolm@redhat.com>
195
196 PR analyzer/93692
197 * analyzer.opt (fdump-analyzer-callgraph): Rewrite description.
198
4f40164a
DM
1992020-02-18 David Malcolm <dmalcolm@redhat.com>
200
201 PR analyzer/93777
202 * region-model.cc (region_model::maybe_cast_1): Replace assertion
203 that build_cast returns non-NULL with a conditional, falling
204 through to the logic which returns a new unknown value of the
205 desired type if it fails.
206
2e623393
DM
2072020-02-18 David Malcolm <dmalcolm@redhat.com>
208
209 PR analyzer/93778
210 * engine.cc (impl_region_model_context::on_unknown_tree_code):
211 Rename to...
212 (impl_region_model_context::on_unexpected_tree_code): ...this and
213 convert first argument from path_var to tree.
214 (exploded_node::on_stmt): Pass ctxt to purge_for_unknown_fncall.
215 * exploded-graph.h (region_model_context::on_unknown_tree_code):
216 Rename to...
217 (region_model_context::on_unexpected_tree_code): ...this and
218 convert first argument from path_var to tree.
219 * program-state.cc (sm_state_map::purge_for_unknown_fncall): Add
220 ctxt param and pass on to calls to get_rvalue.
221 * program-state.h (sm_state_map::purge_for_unknown_fncall): Add
222 ctxt param.
223 * region-model.cc (region_model::handle_unrecognized_call): Pass
224 ctxt on to call to get_rvalue.
225 (region_model::get_lvalue_1): Move body of default case to
226 region_model::make_region_for_unexpected_tree_code and call it.
227 Within COMPONENT_REF case, reject attempts to handle types other
228 than RECORD_TYPE and UNION_TYPE.
229 (region_model::make_region_for_unexpected_tree_code): New
230 function, based on default case of region_model::get_lvalue_1.
231 * region-model.h
232 (region_model::make_region_for_unexpected_tree_code): New decl.
233 (region_model::on_unknown_tree_code): Rename to...
234 (region_model::on_unexpected_tree_code): ...this and convert first
235 argument from path_var to tree.
236 (class test_region_model_context): Update vfunc implementation for
237 above change.
238
a674c7b8
DM
2392020-02-18 David Malcolm <dmalcolm@redhat.com>
240
241 PR analyzer/93774
242 * region-model.cc
243 (region_model::convert_byte_offset_to_array_index): Use
244 int_size_in_bytes before calling size_in_bytes, to gracefully fail
245 on incomplete types.
246
d8cde6f9
DM
2472020-02-17 David Malcolm <dmalcolm@redhat.com>
248
249 PR analyzer/93775
250 * region-model.cc (region_model::get_fndecl_for_call): Handle the
251 case where the code_region's get_tree_for_child_region returns
252 NULL.
253
f76a88eb
DM
2542020-02-17 David Malcolm <dmalcolm@redhat.com>
255
256 PR analyzer/93388
257 * engine.cc (impl_region_model_context::on_unknown_tree_code):
258 New.
259 (exploded_graph::get_or_create_node): Reject invalid states.
260 * exploded-graph.h
261 (impl_region_model_context::on_unknown_tree_code): New decl.
262 (point_and_state::point_and_state): Assert that the state is
263 valid.
264 * program-state.cc (program_state::program_state): Initialize
265 m_valid to true.
266 (program_state::operator=): Copy m_valid.
267 (program_state::program_state): Likewise for move constructor.
268 (program_state::print): Print m_valid.
269 (program_state::dump_to_pp): Likewise.
270 * program-state.h (program_state::m_valid): New field.
271 * region-model.cc (region_model::get_lvalue_1): Implement the
272 default case by returning a new symbolic region and calling
273 the context's on_unknown_tree_code, rather than issuing an
274 internal_error. Implement VIEW_CONVERT_EXPR.
275 * region-model.h (region_model_context::on_unknown_tree_code): New
276 vfunc.
277 (test_region_model_context::on_unknown_tree_code): New.
278
0993ad65
DM
2792020-02-17 David Malcolm <dmalcolm@redhat.com>
280
281 * sm-malloc.cc (malloc_diagnostic::describe_state_change): For
282 transition to the "null" state, only say "assuming" when
283 transitioning from the "unchecked" state.
284
67098787
DM
2852020-02-17 David Malcolm <dmalcolm@redhat.com>
286
287 * diagnostic-manager.h (diagnostic_manager::get_saved_diagnostic):
288 Add const overload.
289 * engine.cc (exploded_node::dump_dot): Dump saved_diagnostics.
290 * exploded-graph.h (exploded_graph::get_diagnostic_manager): Add
291 const overload.
292
91f993b7
DM
2932020-02-11 David Malcolm <dmalcolm@redhat.com>
294
295 PR analyzer/93288
296 * analysis-plan.cc (analysis_plan::use_summary_p): Look through
297 the ultimate_alias_target when getting the called function.
298 * engine.cc (exploded_node::on_stmt): Rename second "ctxt" to
299 "sm_ctxt". Use the region_model's get_fndecl_for_call rather than
300 gimple_call_fndecl.
301 * region-model.cc (region_model::get_fndecl_for_call): Use
302 ultimate_alias_target on fndecl.
303 * supergraph.cc (get_ultimate_function_for_cgraph_edge): New
304 function.
305 (supergraph_call_edge): Use it when rejecting edges without
306 functions.
307 (supergraph::supergraph): Use it to get the function for the
308 cgraph_edge when building interprocedural superedges.
309 (callgraph_superedge::get_callee_function): Use it.
310 * supergraph.h (supergraph::get_num_snodes): Make param const.
311 (supergraph::function_to_num_snodes_t): Make first type param
312 const.
313
a60d9889
DM
3142020-02-11 David Malcolm <dmalcolm@redhat.com>
315
316 PR analyzer/93374
317 * engine.cc (exploded_edge::exploded_edge): Add ext_state param
318 and pass it to change.validate.
319 (exploded_graph::get_or_create_node): Move purging of change
320 svalues to also cover the case of reusing an existing enode.
321 (exploded_graph::add_edge): Pass m_ext_state to exploded_edge's
322 ctor.
323 * exploded-graph.h (exploded_edge::exploded_edge): Add ext_state
324 param.
325 * program-state.cc (state_change::sm_change::validate): Likewise.
326 Assert that m_sm_idx is sane. Use ext_state to validate
327 m_old_state and m_new_state.
328 (state_change::validate): Add ext_state param and pass it to
329 the sm_change validate calls.
330 * program-state.h (state_change::sm_change::validate): Add
331 ext_state param.
332 (state_change::validate): Likewise.
333
a0e4929b
DM
3342020-02-11 David Malcolm <dmalcolm@redhat.com>
335
336 PR analyzer/93669
337 * engine.cc (exploded_graph::dump_exploded_nodes): Handle missing
338 case of STATUS_WORKLIST in implementation of
339 "__analyzer_dump_exploded_nodes".
340
cd28b759
DM
3412020-02-11 David Malcolm <dmalcolm@redhat.com>
342
343 PR analyzer/93649
344 * constraint-manager.cc (constraint_manager::add_constraint): When
345 merging equivalence classes and updating m_constant, also update
346 m_cst_sid.
347 (constraint_manager::validate): If m_constant is non-NULL assert
348 that m_cst_sid is non-null and is valid.
349
5e17c1bd
DM
3502020-02-11 David Malcolm <dmalcolm@redhat.com>
351
352 PR analyzer/93657
353 * analyzer.opt (fdump-analyzer): Reword description.
354 (fdump-analyzer-stderr): Likewise.
355
c46d057f
DM
3562020-02-11 David Malcolm <dmalcolm@redhat.com>
357
358 * region-model.cc (print_quoted_type): New function.
359 (svalue::print): Use it to replace %qT.
360 (region::dump_to_pp): Likewise.
361 (region::dump_child_label): Likewise.
362 (region::print_fields): Likewise.
363
eb031d4b
DM
3642020-02-10 David Malcolm <dmalcolm@redhat.com>
365
366 PR analyzer/93659
367 * analyzer.opt (-param=analyzer-max-recursion-depth=): Fix "tha"
368 -> "that" typo.
369 (Wanalyzer-use-of-uninitialized-value): Fix "initialized" ->
370 "uninitialized" typo.
371
e87deb37
DM
3722020-02-10 David Malcolm <dmalcolm@redhat.com>
373
374 PR analyzer/93350
375 * region-model.cc (region_model::get_lvalue_1):
376 Handle BIT_FIELD_REF.
377 (make_region_for_type): Handle VECTOR_TYPE.
378
e953f958
DM
3792020-02-10 David Malcolm <dmalcolm@redhat.com>
380
381 PR analyzer/93647
382 * diagnostic-manager.cc
383 (diagnostic_manager::prune_for_sm_diagnostic): Bulletproof against
384 VAR being constant.
385 * region-model.cc (region_model::get_lvalue_1): Provide a better
386 error message when encountering an unhandled tree code.
387
41a9e940
DM
3882020-02-10 David Malcolm <dmalcolm@redhat.com>
389
390 PR analyzer/93405
391 * region-model.cc (region_model::get_lvalue_1): Implement
392 CONST_DECL.
393
cb273d81
DM
3942020-02-06 David Malcolm <dmalcolm@redhat.com>
395
396 * region-model.cc (region_model::maybe_cast_1): Attempt to provide
397 a region_svalue if either type is a pointer, rather than if both
398 types are pointers.
399
a4d3bfc0
DM
4002020-02-05 David Malcolm <dmalcolm@redhat.com>
401
402 * engine.cc (exploded_node::dump_dot): Show merger enodes.
403 (worklist::add_node): Assert that the node's m_status is
404 STATUS_WORKLIST.
405 (exploded_graph::process_worklist): Likewise for nodes from the
406 worklist. Set status of merged nodes to STATUS_MERGER.
407 (exploded_graph::process_node): Set status of node to
408 STATUS_PROCESSED.
409 (exploded_graph::dump_exploded_nodes): Rework handling of
410 "__analyzer_dump_exploded_nodes", splitting enodes by status into
411 "processed" and "merger", showing the count of just the processed
412 enodes at the call, rather than the count of all enodes.
413 * exploded-graph.h (exploded_node::status): New enum.
414 (exploded_node::exploded_node): Initialize m_status to
415 STATUS_WORKLIST.
416 (exploded_node::get_status): New getter.
417 (exploded_node::set_status): New setter.
418
1dae549d
DM
4192020-02-04 David Malcolm <dmalcolm@redhat.com>
420
421 PR analyzer/93543
422 * engine.cc (pod_hash_traits<function_call_string>::mark_empty):
423 Eliminate reinterpret_cast.
424 (pod_hash_traits<function_call_string>::is_empty): Likewise.
425
833f1e66
DM
4262020-02-03 David Malcolm <dmalcolm@redhat.com>
427
428 * constraint-manager.cc (range::constrained_to_single_element):
429 Replace fold_build2 with fold_binary. Remove unnecessary newline.
430 (constraint_manager::get_or_add_equiv_class): Replace fold_build2
431 with fold_binary in two places, and remove out-of-date comment.
432 (constraint_manager::eval_condition): Replace fold_build2 with
433 fold_binary.
434 * region-model.cc (constant_svalue::eval_condition): Likewise.
435 (region_model::on_assignment): Likewise.
436
8525d1f5
DM
4372020-02-03 David Malcolm <dmalcolm@redhat.com>
438
439 PR analyzer/93544
440 * diagnostic-manager.cc
441 (diagnostic_manager::prune_for_sm_diagnostic): Bulletproof
442 against bad choices due to bad paths.
443 * engine.cc (impl_region_model_context::on_phi): New.
444 * exploded-graph.h (impl_region_model_context::on_phi): New decl.
445 * region-model.cc (region_model::on_longjmp): Likewise.
446 (region_model::handle_phi): Add phi param. Call the ctxt's on_phi
447 vfunc.
448 (region_model::update_for_phis): Pass phi to handle_phi.
449 * region-model.h (region_model::handle_phi): Add phi param.
450 (region_model_context::on_phi): New vfunc.
451 (test_region_model_context::on_phi): New.
452 * sm-malloc.cc (malloc_state_machine::on_phi): New.
453 (malloc_state_machine::on_zero_assignment): New.
454 * sm.h (state_machine::on_phi): New vfunc.
455
73f38658
DM
4562020-02-03 David Malcolm <dmalcolm@redhat.com>
457
458 * engine.cc (supernode_cluster::dump_dot): Show BB index as
459 well as SN index.
460 * supergraph.cc (supernode::dump_dot): Likewise.
461
5e10b9a2
DM
4622020-02-03 David Malcolm <dmalcolm@redhat.com>
463
464 PR analyzer/93546
465 * region-model.cc (region_model::on_call_pre): Update for new
466 param of symbolic_region ctor.
467 (region_model::deref_rvalue): Likewise.
468 (region_model::add_new_malloc_region): Likewise.
469 (make_region_for_type): Likewise, preserving type.
470 * region-model.h (symbolic_region::symbolic_region): Add "type"
471 param and pass it to base class ctor.
472
287ccd3b
DM
4732020-02-03 David Malcolm <dmalcolm@redhat.com>
474
475 PR analyzer/93547
476 * constraint-manager.cc
477 (constraint_manager::get_or_add_equiv_class): Ensure types are
478 compatible before comparing constants.
479
67751724
DM
4802020-01-31 David Malcolm <dmalcolm@redhat.com>
481
482 PR analyzer/93457
483 * region-model.cc (make_region_for_type): Use VOID_TYPE_P rather
484 than checking against void_type_node.
485
09bea584
DM
4862020-01-31 David Malcolm <dmalcolm@redhat.com>
487
488 PR analyzer/93373
489 * region-model.cc (ASSERT_COMPAT_TYPES): Convert to...
490 (assert_compat_types): ...this, and bail when either type is NULL,
491 or when VOID_TYPE_P (dst_type).
492 (region_model::get_lvalue): Update for above conversion.
493 (region_model::get_rvalue): Likewise.
494
f1c807e8
DM
4952020-01-31 David Malcolm <dmalcolm@redhat.com>
496
497 PR analyzer/93379
498 * region-model.cc (region_model::update_for_return_superedge):
499 Move check for null result so that it also guards setting the
500 lhs.
501
455f58ec
DM
5022020-01-31 David Malcolm <dmalcolm@redhat.com>
503
504 PR analyzer/93438
505 * region-model.cc (stack_region::can_merge_p): Split into a two
506 pass approach, creating all stack regions first, then populating
507 them.
508 (selftest::test_state_merging): Add test coverage for (a) the case
509 of self-merging a model in which a local in an older stack frame
510 points to a local in a more recent stack frame (which previously
511 would ICE), and (b) the case of self-merging a model in which a
512 local points to a global (which previously worked OK).
513
182ce042
DM
5142020-01-31 David Malcolm <dmalcolm@redhat.com>
515
516 * analyzer.cc (is_named_call_p): Replace tests for fndecl being
517 extern at file scope and having a non-NULL DECL_NAME with a call
518 to maybe_special_function_p.
519 * function-set.cc (function_set::contains_decl_p): Add call to
520 maybe_special_function_p.
521
45eb3e49
DM
5222020-01-31 David Malcolm <dmalcolm@redhat.com>
523
524 PR analyzer/93450
525 * constraint-manager.cc
526 (constraint_manager::get_or_add_equiv_class): Only compare constants
527 if their types are compatible.
528 * region-model.cc (constant_svalue::eval_condition): Replace check
529 for identical types with call to types_compatible_p.
530
42f36563
DM
5312020-01-30 David Malcolm <dmalcolm@redhat.com>
532
533 * program-state.cc (extrinsic_state::dump_to_pp): New.
534 (extrinsic_state::dump_to_file): New.
535 (extrinsic_state::dump): New.
536 * program-state.h (extrinsic_state::dump_to_pp): New decl.
537 (extrinsic_state::dump_to_file): New decl.
538 (extrinsic_state::dump): New decl.
539 * sm.cc: Include "pretty-print.h".
540 (state_machine::dump_to_pp): New.
541 * sm.h (state_machine::dump_to_pp): New decl.
542
ebe9174e
DM
5432020-01-30 David Malcolm <dmalcolm@redhat.com>
544
545 * diagnostic-manager.cc (for_each_state_change): Use
546 extrinsic_state::get_num_checkers rather than accessing m_checkers
547 directly.
548 * program-state.cc (program_state::program_state): Likewise.
549 * program-state.h (extrinsic_state::m_checkers): Make private.
550
e978955d
DM
5512020-01-30 David Malcolm <dmalcolm@redhat.com>
552
553 PR analyzer/93356
554 * region-model.cc (region_model::eval_condition): In both
555 overloads, bail out immediately on floating-point types.
556 (region_model::eval_condition_without_cm): Likewise.
557 (region_model::add_constraint): Likewise.
558
d177c49c
DM
5592020-01-30 David Malcolm <dmalcolm@redhat.com>
560
561 PR analyzer/93450
562 * program-state.cc (sm_state_map::set_state): For the overload
563 taking an svalue_id, bail out if the set_state on the ec does
564 nothing. Convert the latter's return type from void to bool,
565 returning true if anything changed.
566 (sm_state_map::impl_set_state): Convert the return type from void
567 to bool, returning true if the state changed.
568 * program-state.h (sm_state_map::set_state): Convert return type
569 from void to bool.
570 (sm_state_map::impl_set_state): Likewise.
571 * region-model.cc (constant_svalue::eval_condition): Only call
572 fold_build2 if the types are the same.
573
7892ff37
JJ
5742020-01-29 Jakub Jelinek <jakub@redhat.com>
575
576 * analyzer.h (PUSH_IGNORE_WFORMAT, POP_IGNORE_WFORMAT): Remove.
577 * constraint-manager.cc: Include diagnostic-core.h before graphviz.h.
578 (range::dump, equiv_class::print): Don't use PUSH_IGNORE_WFORMAT or
579 POP_IGNORE_WFORMAT.
580 * state-purge.cc: Include diagnostic-core.h before
581 gimple-pretty-print.h.
582 (state_purge_annotator::add_node_annotations, print_vec_of_names):
583 Don't use PUSH_IGNORE_WFORMAT or POP_IGNORE_WFORMAT.
584 * region-model.cc: Move diagnostic-core.h include before graphviz.h.
585 (path_var::dump, svalue::print, constant_svalue::print_details,
586 region::dump_to_pp, region::dump_child_label, region::print_fields,
587 map_region::print_fields, map_region::dump_dot_to_pp,
588 map_region::dump_child_label, array_region::print_fields,
589 array_region::dump_dot_to_pp): Don't use PUSH_IGNORE_WFORMAT or
590 POP_IGNORE_WFORMAT.
591
5aebfb71
DM
5922020-01-28 David Malcolm <dmalcolm@redhat.com>
593
594 PR analyzer/93316
595 * engine.cc (rewind_info_t::update_model): Get the longjmp call
596 stmt via get_longjmp_call () rather than assuming it is the last
597 stmt in the longjmp's supernode.
598 (rewind_info_t::add_events_to_path): Get the location_t for the
599 rewind_from_longjmp_event via get_longjmp_call () rather than from
600 the supernode's get_end_location ().
601
6c8e5844
DM
6022020-01-28 David Malcolm <dmalcolm@redhat.com>
603
604 * region-model.cc (poisoned_value_diagnostic::emit): Update for
605 renaming of warning_at overload to warning_meta.
606 * sm-file.cc (file_leak::emit): Likewise.
607 * sm-malloc.cc (double_free::emit): Likewise.
608 (possible_null_deref::emit): Likewise.
609 (possible_null_arg::emit): Likewise.
610 (null_deref::emit): Likewise.
611 (null_arg::emit): Likewise.
612 (use_after_free::emit): Likewise.
613 (malloc_leak::emit): Likewise.
614 (free_of_non_heap::emit): Likewise.
615 * sm-sensitive.cc (exposure_through_output_file::emit): Likewise.
616 * sm-signal.cc (signal_unsafe_call::emit): Likewise.
617 * sm-taint.cc (tainted_array_index::emit): Likewise.
618
8c08c983
DM
6192020-01-27 David Malcolm <dmalcolm@redhat.com>
620
621 PR analyzer/93451
622 * region-model.cc (tree_cmp): For the REAL_CST case, impose an
623 arbitrary order on NaNs relative to other NaNs and to non-NaNs;
624 const-correctness tweak.
625 (ana::selftests::build_real_cst_from_string): New function.
626 (ana::selftests::append_interesting_constants): New function.
627 (ana::selftests::test_tree_cmp_on_constants): New test.
628 (ana::selftests::test_canonicalization_4): New test.
629 (ana::selftests::analyzer_region_model_cc_tests): Call the new
630 tests.
631
2fbea419
DM
6322020-01-27 David Malcolm <dmalcolm@redhat.com>
633
634 PR analyzer/93349
635 * engine.cc (run_checkers): Save and restore input_location.
636
6a81cabc
DM
6372020-01-27 David Malcolm <dmalcolm@redhat.com>
638
639 * call-string.cc (call_string::cmp_1): Delete, moving body to...
640 (call_string::cmp): ...here.
641 * call-string.h (call_string::cmp_1): Delete decl.
642 * engine.cc (worklist::key_t::cmp_1): Delete, moving body to...
643 (worklist::key_t::cmp): ...here. Implement hash comparisons
644 via comparison rather than subtraction to avoid overflow issues.
645 * exploded-graph.h (worklist::key_t::cmp_1): Delete decl.
646 * region-model.cc (tree_cmp): Eliminate buggy checking for
647 symmetry.
648
342e14ff
DM
6492020-01-27 David Malcolm <dmalcolm@redhat.com>
650
651 * analyzer.cc (is_named_call_p): Check that fndecl is "extern"
652 and at file scope. Potentially disregard prefix _ or __ in
653 fndecl's name. Bail if the identifier is NULL.
654 (is_setjmp_call_p): Expect a gcall rather than plain gimple.
655 Remove special-case check for leading prefix, and also check for
656 sigsetjmp.
657 (is_longjmp_call_p): Also check for siglongjmp.
658 (get_user_facing_name): New function.
659 * analyzer.h (is_setjmp_call_p): Expect a gcall rather than plain
660 gimple.
661 (get_user_facing_name): New decl.
662 * checker-path.cc (setjmp_event::get_desc): Use
663 get_user_facing_name to avoid hardcoding the function name.
664 (rewind_event::rewind_event): Add rewind_info param, using it to
665 initialize new m_rewind_info field, and strengthen the assertion.
666 (rewind_from_longjmp_event::get_desc): Use get_user_facing_name to
667 avoid hardcoding the function name.
668 (rewind_to_setjmp_event::get_desc): Likewise.
669 * checker-path.h (setjmp_event::setjmp_event): Add setjmp_call
670 param and use it to initialize...
671 (setjmp_event::m_setjmp_call): New field.
672 (rewind_event::rewind_event): Add rewind_info param.
673 (rewind_event::m_rewind_info): New protected field.
674 (rewind_from_longjmp_event::rewind_from_longjmp_event): Add
675 rewind_info param.
676 (class rewind_to_setjmp_event): Move rewind_info field to parent
677 class.
678 * diagnostic-manager.cc (diagnostic_manager::add_events_for_eedge):
679 Update setjmp-handling for is_setjmp_call_p requiring a gcall;
680 pass the call to the new setjmp_event.
681 * engine.cc (exploded_node::on_stmt): Update for is_setjmp_call_p
682 requiring a gcall.
683 (stale_jmp_buf::emit): Use get_user_facing_name to avoid
684 hardcoding the function names.
685 (exploded_node::on_longjmp): Pass the longjmp_call when
686 constructing rewind_info.
687 (rewind_info_t::add_events_to_path): Pass the rewind_info_t to the
688 rewind_from_longjmp_event's ctor.
689 * exploded-graph.h (rewind_info_t::rewind_info_t): Add
690 longjmp_call param.
691 (rewind_info_t::get_longjmp_call): New.
692 (rewind_info_t::m_longjmp_call): New.
693 * region-model.cc (region_model::on_setjmp): Update comment to
694 indicate this is also for sigsetjmp.
695 * region-model.h (struct setjmp_record): Likewise.
696 (class setjmp_svalue): Likewise.
697
26d949c8
DM
6982020-01-27 David Malcolm <dmalcolm@redhat.com>
699
700 PR analyzer/93276
701 * analyzer.h (PUSH_IGNORE_WFORMAT, POP_IGNORE_WFORMAT): Guard these
702 macros with GCC_VERSION >= 4006, making them no-op otherwise.
703 * engine.cc (exploded_edge::exploded_edge): Specify template for
704 base class initializer.
705 (exploded_graph::add_edge): Specify template when chaining up to
706 base class add_edge implementation.
707 (viz_callgraph_node::dump_dot): Drop redundant "typename".
708 (viz_callgraph_edge::viz_callgraph_edge): Specify template for
709 base class initializer.
710 * program-state.cc (sm_state_map::clone_with_remapping): Drop
711 redundant "typename".
712 (sm_state_map::print): Likewise.
713 (sm_state_map::hash): Likewise.
714 (sm_state_map::operator==): Likewise.
715 (sm_state_map::remap_svalue_ids): Likewise.
716 (sm_state_map::on_svalue_purge): Likewise.
717 (sm_state_map::validate): Likewise.
718 * program-state.h (sm_state_map::iterator_t): Likewise.
719 * supergraph.h (superedge::superedge): Specify template for base
720 class initializer.
721
648796da
DM
7222020-01-23 David Malcolm <dmalcolm@redhat.com>
723
724 PR analyzer/93375
725 * supergraph.cc (callgraph_superedge::get_arg_for_parm): Fail
726 gracefully is the number of parameters at the callee exceeds the
727 number of arguments at the call stmt.
728 (callgraph_superedge::get_parm_for_arg): Likewise.
729
591b59eb
DM
7302020-01-22 David Malcolm <dmalcolm@redhat.com>
731
732 PR analyzer/93382
733 * program-state.cc (sm_state_map::on_svalue_purge): If the
734 entry survives, but the origin is being purged, then reset the
735 origin to null.
736
c9c8aef4
DM
7372020-01-22 David Malcolm <dmalcolm@redhat.com>
738
739 * sm-signal.cc: Fix nesting of CHECKING_P and namespace ana.
740
fd9982bb
DM
7412020-01-22 David Malcolm <dmalcolm@redhat.com>
742
743 PR analyzer/93378
744 * engine.cc (setjmp_svalue::compare_fields): Update for
745 replacement of m_enode with m_setjmp_record.
746 (setjmp_svalue::add_to_hash): Likewise.
747 (setjmp_svalue::get_index): Rename...
748 (setjmp_svalue::get_enode_index): ...to this.
749 (setjmp_svalue::print_details): Update for replacement of m_enode
750 with m_setjmp_record.
751 (exploded_node::on_longjmp): Likewise.
752 * exploded-graph.h (rewind_info_t::m_enode_origin): Replace...
753 (rewind_info_t::m_setjmp_record): ...with this.
754 (rewind_info_t::rewind_info_t): Update for replacement of m_enode
755 with m_setjmp_record.
756 (rewind_info_t::get_setjmp_point): Likewise.
757 (rewind_info_t::get_setjmp_call): Likewise.
758 * region-model.cc (region_model::dump_summary_of_map): Likewise.
759 (region_model::on_setjmp): Likewise.
760 * region-model.h (struct setjmp_record): New struct.
761 (setjmp_svalue::m_enode): Replace...
762 (setjmp_svalue::m_setjmp_record): ...with this.
763 (setjmp_svalue::setjmp_svalue): Update for replacement of m_enode
764 with m_setjmp_record.
765 (setjmp_svalue::clone): Likewise.
766 (setjmp_svalue::get_index): Rename...
767 (setjmp_svalue::get_enode_index): ...to this.
768 (setjmp_svalue::get_exploded_node): Replace...
769 (setjmp_svalue::get_setjmp_record): ...with this.
770
da7cf663
DM
7712020-01-22 David Malcolm <dmalcolm@redhat.com>
772
773 PR analyzer/93316
774 * analyzer.cc (is_setjmp_call_p): Check for "setjmp" as well as
775 "_setjmp".
776
75038aa6
DM
7772020-01-22 David Malcolm <dmalcolm@redhat.com>
778
779 PR analyzer/93307
780 * analysis-plan.h: Wrap everything namespace "ana".
781 * analyzer-logging.cc: Likewise.
782 * analyzer-logging.h: Likewise.
783 * analyzer-pass.cc (pass_analyzer::execute): Update for "ana"
784 namespace.
785 * analyzer-selftests.cc: Wrap everything namespace "ana".
786 * analyzer-selftests.h: Likewise.
787 * analyzer.h: Likewise for forward decls of types.
788 * call-string.h: Likewise.
789 * checker-path.cc: Likewise.
790 * checker-path.h: Likewise.
791 * constraint-manager.cc: Likewise.
792 * constraint-manager.h: Likewise.
793 * diagnostic-manager.cc: Likewise.
794 * diagnostic-manager.h: Likewise.
795 * engine.cc: Likewise.
796 * engine.h: Likewise.
797 * exploded-graph.h: Likewise.
798 * function-set.cc: Likewise.
799 * function-set.h: Likewise.
800 * pending-diagnostic.cc: Likewise.
801 * pending-diagnostic.h: Likewise.
802 * program-point.cc: Likewise.
803 * program-point.h: Likewise.
804 * program-state.cc: Likewise.
805 * program-state.h: Likewise.
806 * region-model.cc: Likewise.
807 * region-model.h: Likewise.
808 * sm-file.cc: Likewise.
809 * sm-malloc.cc: Likewise.
810 * sm-pattern-test.cc: Likewise.
811 * sm-sensitive.cc: Likewise.
812 * sm-signal.cc: Likewise.
813 * sm-taint.cc: Likewise.
814 * sm.cc: Likewise.
815 * sm.h: Likewise.
816 * state-purge.h: Likewise.
817 * supergraph.cc: Likewise.
818 * supergraph.h: Likewise.
819
4f01e577
DM
8202020-01-21 David Malcolm <dmalcolm@redhat.com>
821
822 PR analyzer/93352
823 * region-model.cc (int_cmp): Rename to...
824 (array_region::key_cmp): ...this, using key_t rather than int.
825 Rewrite in terms of comparisons rather than subtraction to
826 ensure qsort is anti-symmetric when handling extreme values.
827 (array_region::walk_for_canonicalization): Update for above
828 renaming.
829 * region-model.h (array_region::key_cmp): New decl.
830
07c86323
DM
8312020-01-17 David Malcolm <dmalcolm@redhat.com>
832
833 PR analyzer/93290
834 * region-model.cc (region_model::eval_condition_without_cm): Avoid
835 gcc_unreachable for unexpected operations for the case where
836 we're comparing an svalue against itself.
837
5f030383
DM
8382020-01-17 David Malcolm <dmalcolm@redhat.com>
839
840 PR analyzer/93281
841 * region-model.cc
842 (region_model::convert_byte_offset_to_array_index): Convert to
843 ssizetype before dividing by byte_size. Use fold_binary rather
844 than fold_build2 to avoid needlessly constructing a tree for the
845 non-const case.
846
49e9a999
DM
8472020-01-15 David Malcolm <dmalcolm@redhat.com>
848
849 * engine.cc (class impl_region_model_context): Fix comment.
850
32077b69
DM
8512020-01-14 David Malcolm <dmalcolm@redhat.com>
852
853 PR analyzer/93212
854 * region-model.cc (make_region_for_type): Use
855 FUNC_OR_METHOD_TYPE_P rather than comparing against FUNCTION_TYPE.
856 * region-model.h (function_region::function_region): Likewise.
857
7fb3669e
DM
8582020-01-14 David Malcolm <dmalcolm@redhat.com>
859
860 * program-state.cc (sm_state_map::clone_with_remapping): Copy
861 m_global_state.
862 (selftest::test_program_state_merging_2): New selftest.
863 (selftest::analyzer_program_state_cc_tests): Call it.
864
e2a538b1
DM
8652020-01-14 David Malcolm <dmalcolm@redhat.com>
866
867 * checker-path.h (checker_path::get_checker_event): New function.
868 (checker_path): Add DISABLE_COPY_AND_ASSIGN; make fields private.
869 * diagnostic-manager.cc
870 (diagnostic_manager::prune_for_sm_diagnostic): Replace direct
871 access to checker_path::m_events with accessor functions. Fix
872 overlong line.
873 (diagnostic_manager::prune_interproc_events): Replace direct
874 access to checker_path::m_events with accessor functions.
875 (diagnostic_manager::finish_pruning): Likewise.
876
94946989
DM
8772020-01-14 David Malcolm <dmalcolm@redhat.com>
878
879 * checker-path.h (checker_event::clone): Delete vfunc decl.
880 (debug_event::clone): Delete vfunc impl.
881 (custom_event::clone): Delete vfunc impl.
882 (statement_event::clone): Delete vfunc impl.
883 (function_entry_event::clone): Delete vfunc impl.
884 (state_change_event::clone): Delete vfunc impl.
885 (start_cfg_edge_event::clone): Delete vfunc impl.
886 (end_cfg_edge_event::clone): Delete vfunc impl.
887 (call_event::clone): Delete vfunc impl.
888 (return_event::clone): Delete vfunc impl.
889 (setjmp_event::clone): Delete vfunc impl.
890 (rewind_from_longjmp_event::clone): Delete vfunc impl.
891 (rewind_to_setjmp_event::clone): Delete vfunc impl.
892 (warning_event::clone): Delete vfunc impl.
893
718930c0
DM
8942020-01-14 David Malcolm <dmalcolm@redhat.com>
895
896 * supergraph.cc (supernode::dump_dot): Ensure that the TABLE
897 element has at least one TR.
898
8397af8e
DM
8992020-01-14 David Malcolm <dmalcolm@redhat.com>
900
901 PR analyzer/58237
902 * engine.cc (leak_stmt_finder::find_stmt): Use get_pure_location
903 when comparing against UNKNOWN_LOCATION.
904 (stmt_requires_new_enode_p): Likewise.
905 (exploded_graph::dump_exploded_nodes): Likewise.
906 * supergraph.cc (supernode::get_start_location): Likewise.
907 (supernode::get_end_location): Likewise.
908
697251b7
DM
9092020-01-14 David Malcolm <dmalcolm@redhat.com>
910
911 PR analyzer/58237
912 * analyzer-selftests.cc (selftest::run_analyzer_selftests): Call
913 selftest::analyzer_sm_file_cc_tests.
914 * analyzer-selftests.h (selftest::analyzer_sm_file_cc_tests): New
915 decl.
916 * sm-file.cc: Include "analyzer/function-set.h" and
917 "analyzer/analyzer-selftests.h".
918 (get_file_using_fns): New function.
919 (is_file_using_fn_p): New function.
920 (fileptr_state_machine::on_stmt): Return true for known functions.
921 (selftest::analyzer_sm_file_cc_tests): New function.
922
4804c5fe
DM
9232020-01-14 David Malcolm <dmalcolm@redhat.com>
924
925 * analyzer-selftests.cc (selftest::run_analyzer_selftests): Call
926 selftest::analyzer_sm_signal_cc_tests.
927 * analyzer-selftests.h (selftest::analyzer_sm_signal_cc_tests):
928 New decl.
929 * sm-signal.cc: Include "analyzer/function-set.h" and
930 "analyzer/analyzer-selftests.h".
931 (get_async_signal_unsafe_fns): New function.
932 (signal_unsafe_p): Reimplement in terms of the above.
933 (selftest::analyzer_sm_signal_cc_tests): New function.
934
a6b5f19c
DM
9352020-01-14 David Malcolm <dmalcolm@redhat.com>
936
937 * analyzer-selftests.cc (selftest::run_analyzer_selftests): Call
938 selftest::analyzer_function_set_cc_tests.
939 * analyzer-selftests.h (selftest::analyzer_function_set_cc_tests):
940 New decl.
941 * function-set.cc: New file.
942 * function-set.h: New file.
943
ef7827b0
DM
9442020-01-14 David Malcolm <dmalcolm@redhat.com>
945
946 * analyzer.h (fndecl_has_gimple_body_p): New decl.
947 * engine.cc (impl_region_model_context::on_unknown_change): New
948 function.
949 (fndecl_has_gimple_body_p): Make non-static.
950 (exploded_node::on_stmt): Treat __analyzer_dump_exploded_nodes as
951 known. Track whether we have a call with unknown side-effects and
952 pass it to on_call_post.
953 * exploded-graph.h (impl_region_model_context::on_unknown_change):
954 New decl.
955 * program-state.cc (sm_state_map::on_unknown_change): New function.
956 * program-state.h (sm_state_map::on_unknown_change): New decl.
957 * region-model.cc: Include "bitmap.h".
958 (region_model::on_call_pre): Return a bool, capturing whether the
959 call has unknown side effects.
960 (region_model::on_call_post): Add arg "bool unknown_side_effects"
961 and if true, call handle_unrecognized_call.
962 (class reachable_regions): New class.
963 (region_model::handle_unrecognized_call): New function.
964 * region-model.h (region_model::on_call_pre): Return a bool.
965 (region_model::on_call_post): Add arg "bool unknown_side_effects".
966 (region_model::handle_unrecognized_call): New decl.
967 (region_model_context::on_unknown_change): New vfunc.
968 (test_region_model_context::on_unknown_change): New function.
969
14f9d7b9
DM
9702020-01-14 David Malcolm <dmalcolm@redhat.com>
971
972 * diagnostic-manager.cc (saved_diagnostic::operator==): Move here
973 from header. Replace pointer equality test on m_var with call to
974 pending_diagnostic::same_tree_p.
975 * diagnostic-manager.h (saved_diagnostic::operator==): Move to
976 diagnostic-manager.cc.
977 * pending-diagnostic.cc (pending_diagnostic::same_tree_p): New.
978 * pending-diagnostic.h (pending_diagnostic::same_tree_p): New.
979 * sm-file.cc (file_diagnostic::subclass_equal_p): Replace pointer
980 equality on m_arg with call to pending_diagnostic::same_tree_p.
981 * sm-malloc.cc (malloc_diagnostic::subclass_equal_p): Likewise.
982 (possible_null_arg::subclass_equal_p): Likewise.
983 (null_arg::subclass_equal_p): Likewise.
984 (free_of_non_heap::subclass_equal_p): Likewise.
985 * sm-pattern-test.cc (pattern_match::operator==): Likewise.
986 * sm-sensitive.cc (exposure_through_output_file::operator==):
987 Likewise.
988 * sm-taint.cc (tainted_array_index::operator==): Likewise.
989
f474fbd5
DM
9902020-01-14 David Malcolm <dmalcolm@redhat.com>
991
992 * diagnostic-manager.cc (dedupe_winners::add): Add logging
993 of deduplication decisions made.
994
757bf1df
DM
9952020-01-14 David Malcolm <dmalcolm@redhat.com>
996
997 * ChangeLog: New file.
998 * analyzer-selftests.cc: New file.
999 * analyzer-selftests.h: New file.
1000 * analyzer.opt: New file.
1001 * analysis-plan.cc: New file.
1002 * analysis-plan.h: New file.
1003 * analyzer-logging.cc: New file.
1004 * analyzer-logging.h: New file.
1005 * analyzer-pass.cc: New file.
1006 * analyzer.cc: New file.
1007 * analyzer.h: New file.
1008 * call-string.cc: New file.
1009 * call-string.h: New file.
1010 * checker-path.cc: New file.
1011 * checker-path.h: New file.
1012 * constraint-manager.cc: New file.
1013 * constraint-manager.h: New file.
1014 * diagnostic-manager.cc: New file.
1015 * diagnostic-manager.h: New file.
1016 * engine.cc: New file.
1017 * engine.h: New file.
1018 * exploded-graph.h: New file.
1019 * pending-diagnostic.cc: New file.
1020 * pending-diagnostic.h: New file.
1021 * program-point.cc: New file.
1022 * program-point.h: New file.
1023 * program-state.cc: New file.
1024 * program-state.h: New file.
1025 * region-model.cc: New file.
1026 * region-model.h: New file.
1027 * sm-file.cc: New file.
1028 * sm-malloc.cc: New file.
1029 * sm-malloc.dot: New file.
1030 * sm-pattern-test.cc: New file.
1031 * sm-sensitive.cc: New file.
1032 * sm-signal.cc: New file.
1033 * sm-taint.cc: New file.
1034 * sm.cc: New file.
1035 * sm.h: New file.
1036 * state-purge.cc: New file.
1037 * state-purge.h: New file.
1038 * supergraph.cc: New file.
1039 * supergraph.h: New file.
1040
10412019-12-13 David Malcolm <dmalcolm@redhat.com>
1042
1043 * Initial creation
1044
1045\f
1046Copyright (C) 2019-2020 Free Software Foundation, Inc.
1047
1048Copying and distribution of this file, with or without modification,
1049are permitted in any medium without royalty provided the copyright
1050notice and this notice are preserved.