annotate gcc/analyzer/ChangeLog @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 2020-02-11 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 PR analyzer/93288
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 * analysis-plan.cc (analysis_plan::use_summary_p): Look through
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 the ultimate_alias_target when getting the called function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 * engine.cc (exploded_node::on_stmt): Rename second "ctxt" to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 "sm_ctxt". Use the region_model's get_fndecl_for_call rather than
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 gimple_call_fndecl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 * region-model.cc (region_model::get_fndecl_for_call): Use
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 ultimate_alias_target on fndecl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 * supergraph.cc (get_ultimate_function_for_cgraph_edge): New
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 (supergraph_call_edge): Use it when rejecting edges without
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 functions.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 (supergraph::supergraph): Use it to get the function for the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 cgraph_edge when building interprocedural superedges.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 (callgraph_superedge::get_callee_function): Use it.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 * supergraph.h (supergraph::get_num_snodes): Make param const.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 (supergraph::function_to_num_snodes_t): Make first type param
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 const.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 2020-02-11 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 PR analyzer/93374
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 * engine.cc (exploded_edge::exploded_edge): Add ext_state param
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 and pass it to change.validate.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 (exploded_graph::get_or_create_node): Move purging of change
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 svalues to also cover the case of reusing an existing enode.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 (exploded_graph::add_edge): Pass m_ext_state to exploded_edge's
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 ctor.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 * exploded-graph.h (exploded_edge::exploded_edge): Add ext_state
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 param.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 * program-state.cc (state_change::sm_change::validate): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 Assert that m_sm_idx is sane. Use ext_state to validate
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 m_old_state and m_new_state.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 (state_change::validate): Add ext_state param and pass it to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 the sm_change validate calls.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 * program-state.h (state_change::sm_change::validate): Add
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 ext_state param.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 (state_change::validate): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 2020-02-11 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 PR analyzer/93669
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 * engine.cc (exploded_graph::dump_exploded_nodes): Handle missing
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 case of STATUS_WORKLIST in implementation of
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 "__analyzer_dump_exploded_nodes".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 2020-02-11 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 PR analyzer/93649
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 * constraint-manager.cc (constraint_manager::add_constraint): When
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 merging equivalence classes and updating m_constant, also update
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 m_cst_sid.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 (constraint_manager::validate): If m_constant is non-NULL assert
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 that m_cst_sid is non-null and is valid.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 2020-02-11 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 PR analyzer/93657
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 * analyzer.opt (fdump-analyzer): Reword description.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 (fdump-analyzer-stderr): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 2020-02-11 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 * region-model.cc (print_quoted_type): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67 (svalue::print): Use it to replace %qT.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 (region::dump_to_pp): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69 (region::dump_child_label): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70 (region::print_fields): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
71
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
72 2020-02-10 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
73
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
74 PR analyzer/93659
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
75 * analyzer.opt (-param=analyzer-max-recursion-depth=): Fix "tha"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
76 -> "that" typo.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
77 (Wanalyzer-use-of-uninitialized-value): Fix "initialized" ->
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
78 "uninitialized" typo.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
79
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
80 2020-02-10 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
81
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
82 PR analyzer/93350
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
83 * region-model.cc (region_model::get_lvalue_1):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
84 Handle BIT_FIELD_REF.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
85 (make_region_for_type): Handle VECTOR_TYPE.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
86
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
87 2020-02-10 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
88
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
89 PR analyzer/93647
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
90 * diagnostic-manager.cc
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
91 (diagnostic_manager::prune_for_sm_diagnostic): Bulletproof against
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
92 VAR being constant.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
93 * region-model.cc (region_model::get_lvalue_1): Provide a better
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
94 error message when encountering an unhandled tree code.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
95
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
96 2020-02-10 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
97
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
98 PR analyzer/93405
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
99 * region-model.cc (region_model::get_lvalue_1): Implement
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
100 CONST_DECL.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
101
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
102 2020-02-06 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
103
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
104 * region-model.cc (region_model::maybe_cast_1): Attempt to provide
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
105 a region_svalue if either type is a pointer, rather than if both
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
106 types are pointers.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
107
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
108 2020-02-05 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
109
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
110 * engine.cc (exploded_node::dump_dot): Show merger enodes.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
111 (worklist::add_node): Assert that the node's m_status is
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
112 STATUS_WORKLIST.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
113 (exploded_graph::process_worklist): Likewise for nodes from the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
114 worklist. Set status of merged nodes to STATUS_MERGER.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
115 (exploded_graph::process_node): Set status of node to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
116 STATUS_PROCESSED.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
117 (exploded_graph::dump_exploded_nodes): Rework handling of
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
118 "__analyzer_dump_exploded_nodes", splitting enodes by status into
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
119 "processed" and "merger", showing the count of just the processed
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
120 enodes at the call, rather than the count of all enodes.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
121 * exploded-graph.h (exploded_node::status): New enum.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
122 (exploded_node::exploded_node): Initialize m_status to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
123 STATUS_WORKLIST.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
124 (exploded_node::get_status): New getter.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
125 (exploded_node::set_status): New setter.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
126
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
127 2020-02-04 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
128
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
129 PR analyzer/93543
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
130 * engine.cc (pod_hash_traits<function_call_string>::mark_empty):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
131 Eliminate reinterpret_cast.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
132 (pod_hash_traits<function_call_string>::is_empty): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
133
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
134 2020-02-03 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
135
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
136 * constraint-manager.cc (range::constrained_to_single_element):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
137 Replace fold_build2 with fold_binary. Remove unnecessary newline.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
138 (constraint_manager::get_or_add_equiv_class): Replace fold_build2
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
139 with fold_binary in two places, and remove out-of-date comment.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
140 (constraint_manager::eval_condition): Replace fold_build2 with
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
141 fold_binary.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
142 * region-model.cc (constant_svalue::eval_condition): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
143 (region_model::on_assignment): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
144
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
145 2020-02-03 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
146
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
147 PR analyzer/93544
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
148 * diagnostic-manager.cc
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
149 (diagnostic_manager::prune_for_sm_diagnostic): Bulletproof
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
150 against bad choices due to bad paths.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
151 * engine.cc (impl_region_model_context::on_phi): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
152 * exploded-graph.h (impl_region_model_context::on_phi): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
153 * region-model.cc (region_model::on_longjmp): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
154 (region_model::handle_phi): Add phi param. Call the ctxt's on_phi
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
155 vfunc.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
156 (region_model::update_for_phis): Pass phi to handle_phi.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
157 * region-model.h (region_model::handle_phi): Add phi param.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
158 (region_model_context::on_phi): New vfunc.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
159 (test_region_model_context::on_phi): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
160 * sm-malloc.cc (malloc_state_machine::on_phi): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
161 (malloc_state_machine::on_zero_assignment): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
162 * sm.h (state_machine::on_phi): New vfunc.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
163
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
164 2020-02-03 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
165
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
166 * engine.cc (supernode_cluster::dump_dot): Show BB index as
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
167 well as SN index.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
168 * supergraph.cc (supernode::dump_dot): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
169
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
170 2020-02-03 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
171
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
172 PR analyzer/93546
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
173 * region-model.cc (region_model::on_call_pre): Update for new
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
174 param of symbolic_region ctor.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
175 (region_model::deref_rvalue): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
176 (region_model::add_new_malloc_region): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
177 (make_region_for_type): Likewise, preserving type.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
178 * region-model.h (symbolic_region::symbolic_region): Add "type"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
179 param and pass it to base class ctor.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
180
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
181 2020-02-03 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
182
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
183 PR analyzer/93547
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
184 * constraint-manager.cc
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
185 (constraint_manager::get_or_add_equiv_class): Ensure types are
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
186 compatible before comparing constants.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
187
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
188 2020-01-31 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
189
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
190 PR analyzer/93457
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
191 * region-model.cc (make_region_for_type): Use VOID_TYPE_P rather
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
192 than checking against void_type_node.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
193
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
194 2020-01-31 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
195
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
196 PR analyzer/93373
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
197 * region-model.cc (ASSERT_COMPAT_TYPES): Convert to...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
198 (assert_compat_types): ...this, and bail when either type is NULL,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
199 or when VOID_TYPE_P (dst_type).
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
200 (region_model::get_lvalue): Update for above conversion.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
201 (region_model::get_rvalue): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
202
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
203 2020-01-31 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
204
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
205 PR analyzer/93379
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
206 * region-model.cc (region_model::update_for_return_superedge):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
207 Move check for null result so that it also guards setting the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
208 lhs.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
209
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
210 2020-01-31 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
211
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
212 PR analyzer/93438
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
213 * region-model.cc (stack_region::can_merge_p): Split into a two
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
214 pass approach, creating all stack regions first, then populating
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
215 them.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
216 (selftest::test_state_merging): Add test coverage for (a) the case
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
217 of self-merging a model in which a local in an older stack frame
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
218 points to a local in a more recent stack frame (which previously
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
219 would ICE), and (b) the case of self-merging a model in which a
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
220 local points to a global (which previously worked OK).
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
221
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
222 2020-01-31 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
223
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
224 * analyzer.cc (is_named_call_p): Replace tests for fndecl being
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
225 extern at file scope and having a non-NULL DECL_NAME with a call
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
226 to maybe_special_function_p.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
227 * function-set.cc (function_set::contains_decl_p): Add call to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
228 maybe_special_function_p.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
229
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
230 2020-01-31 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
231
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
232 PR analyzer/93450
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
233 * constraint-manager.cc
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
234 (constraint_manager::get_or_add_equiv_class): Only compare constants
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
235 if their types are compatible.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
236 * region-model.cc (constant_svalue::eval_condition): Replace check
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
237 for identical types with call to types_compatible_p.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
238
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
239 2020-01-30 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
240
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
241 * program-state.cc (extrinsic_state::dump_to_pp): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
242 (extrinsic_state::dump_to_file): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
243 (extrinsic_state::dump): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
244 * program-state.h (extrinsic_state::dump_to_pp): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
245 (extrinsic_state::dump_to_file): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
246 (extrinsic_state::dump): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
247 * sm.cc: Include "pretty-print.h".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
248 (state_machine::dump_to_pp): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
249 * sm.h (state_machine::dump_to_pp): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
250
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
251 2020-01-30 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
252
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
253 * diagnostic-manager.cc (for_each_state_change): Use
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
254 extrinsic_state::get_num_checkers rather than accessing m_checkers
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
255 directly.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
256 * program-state.cc (program_state::program_state): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
257 * program-state.h (extrinsic_state::m_checkers): Make private.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
258
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
259 2020-01-30 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
260
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
261 PR analyzer/93356
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
262 * region-model.cc (region_model::eval_condition): In both
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
263 overloads, bail out immediately on floating-point types.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
264 (region_model::eval_condition_without_cm): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
265 (region_model::add_constraint): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
266
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
267 2020-01-30 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
268
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
269 PR analyzer/93450
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
270 * program-state.cc (sm_state_map::set_state): For the overload
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
271 taking an svalue_id, bail out if the set_state on the ec does
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
272 nothing. Convert the latter's return type from void to bool,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
273 returning true if anything changed.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
274 (sm_state_map::impl_set_state): Convert the return type from void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
275 to bool, returning true if the state changed.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
276 * program-state.h (sm_state_map::set_state): Convert return type
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
277 from void to bool.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
278 (sm_state_map::impl_set_state): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
279 * region-model.cc (constant_svalue::eval_condition): Only call
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
280 fold_build2 if the types are the same.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
281
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
282 2020-01-29 Jakub Jelinek <jakub@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
283
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
284 * analyzer.h (PUSH_IGNORE_WFORMAT, POP_IGNORE_WFORMAT): Remove.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
285 * constraint-manager.cc: Include diagnostic-core.h before graphviz.h.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
286 (range::dump, equiv_class::print): Don't use PUSH_IGNORE_WFORMAT or
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
287 POP_IGNORE_WFORMAT.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
288 * state-purge.cc: Include diagnostic-core.h before
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
289 gimple-pretty-print.h.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
290 (state_purge_annotator::add_node_annotations, print_vec_of_names):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
291 Don't use PUSH_IGNORE_WFORMAT or POP_IGNORE_WFORMAT.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
292 * region-model.cc: Move diagnostic-core.h include before graphviz.h.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
293 (path_var::dump, svalue::print, constant_svalue::print_details,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
294 region::dump_to_pp, region::dump_child_label, region::print_fields,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
295 map_region::print_fields, map_region::dump_dot_to_pp,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
296 map_region::dump_child_label, array_region::print_fields,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
297 array_region::dump_dot_to_pp): Don't use PUSH_IGNORE_WFORMAT or
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
298 POP_IGNORE_WFORMAT.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
299
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
300 2020-01-28 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
301
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
302 PR analyzer/93316
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
303 * engine.cc (rewind_info_t::update_model): Get the longjmp call
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
304 stmt via get_longjmp_call () rather than assuming it is the last
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
305 stmt in the longjmp's supernode.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
306 (rewind_info_t::add_events_to_path): Get the location_t for the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
307 rewind_from_longjmp_event via get_longjmp_call () rather than from
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
308 the supernode's get_end_location ().
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
309
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
310 2020-01-28 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
311
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
312 * region-model.cc (poisoned_value_diagnostic::emit): Update for
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
313 renaming of warning_at overload to warning_meta.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
314 * sm-file.cc (file_leak::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
315 * sm-malloc.cc (double_free::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
316 (possible_null_deref::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
317 (possible_null_arg::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
318 (null_deref::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
319 (null_arg::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
320 (use_after_free::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
321 (malloc_leak::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
322 (free_of_non_heap::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
323 * sm-sensitive.cc (exposure_through_output_file::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
324 * sm-signal.cc (signal_unsafe_call::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
325 * sm-taint.cc (tainted_array_index::emit): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
326
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
327 2020-01-27 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
328
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
329 PR analyzer/93451
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
330 * region-model.cc (tree_cmp): For the REAL_CST case, impose an
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
331 arbitrary order on NaNs relative to other NaNs and to non-NaNs;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
332 const-correctness tweak.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
333 (ana::selftests::build_real_cst_from_string): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
334 (ana::selftests::append_interesting_constants): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
335 (ana::selftests::test_tree_cmp_on_constants): New test.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
336 (ana::selftests::test_canonicalization_4): New test.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
337 (ana::selftests::analyzer_region_model_cc_tests): Call the new
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
338 tests.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
339
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
340 2020-01-27 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
341
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
342 PR analyzer/93349
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
343 * engine.cc (run_checkers): Save and restore input_location.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
344
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
345 2020-01-27 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
346
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
347 * call-string.cc (call_string::cmp_1): Delete, moving body to...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
348 (call_string::cmp): ...here.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
349 * call-string.h (call_string::cmp_1): Delete decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
350 * engine.cc (worklist::key_t::cmp_1): Delete, moving body to...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
351 (worklist::key_t::cmp): ...here. Implement hash comparisons
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
352 via comparison rather than subtraction to avoid overflow issues.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
353 * exploded-graph.h (worklist::key_t::cmp_1): Delete decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
354 * region-model.cc (tree_cmp): Eliminate buggy checking for
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
355 symmetry.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
356
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
357 2020-01-27 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
358
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
359 * analyzer.cc (is_named_call_p): Check that fndecl is "extern"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
360 and at file scope. Potentially disregard prefix _ or __ in
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
361 fndecl's name. Bail if the identifier is NULL.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
362 (is_setjmp_call_p): Expect a gcall rather than plain gimple.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
363 Remove special-case check for leading prefix, and also check for
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
364 sigsetjmp.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
365 (is_longjmp_call_p): Also check for siglongjmp.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
366 (get_user_facing_name): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
367 * analyzer.h (is_setjmp_call_p): Expect a gcall rather than plain
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
368 gimple.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
369 (get_user_facing_name): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
370 * checker-path.cc (setjmp_event::get_desc): Use
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
371 get_user_facing_name to avoid hardcoding the function name.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
372 (rewind_event::rewind_event): Add rewind_info param, using it to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
373 initialize new m_rewind_info field, and strengthen the assertion.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
374 (rewind_from_longjmp_event::get_desc): Use get_user_facing_name to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
375 avoid hardcoding the function name.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
376 (rewind_to_setjmp_event::get_desc): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
377 * checker-path.h (setjmp_event::setjmp_event): Add setjmp_call
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
378 param and use it to initialize...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
379 (setjmp_event::m_setjmp_call): New field.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
380 (rewind_event::rewind_event): Add rewind_info param.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
381 (rewind_event::m_rewind_info): New protected field.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
382 (rewind_from_longjmp_event::rewind_from_longjmp_event): Add
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
383 rewind_info param.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
384 (class rewind_to_setjmp_event): Move rewind_info field to parent
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
385 class.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
386 * diagnostic-manager.cc (diagnostic_manager::add_events_for_eedge):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
387 Update setjmp-handling for is_setjmp_call_p requiring a gcall;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
388 pass the call to the new setjmp_event.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
389 * engine.cc (exploded_node::on_stmt): Update for is_setjmp_call_p
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
390 requiring a gcall.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
391 (stale_jmp_buf::emit): Use get_user_facing_name to avoid
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
392 hardcoding the function names.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
393 (exploded_node::on_longjmp): Pass the longjmp_call when
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
394 constructing rewind_info.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
395 (rewind_info_t::add_events_to_path): Pass the rewind_info_t to the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
396 rewind_from_longjmp_event's ctor.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
397 * exploded-graph.h (rewind_info_t::rewind_info_t): Add
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
398 longjmp_call param.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
399 (rewind_info_t::get_longjmp_call): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
400 (rewind_info_t::m_longjmp_call): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
401 * region-model.cc (region_model::on_setjmp): Update comment to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
402 indicate this is also for sigsetjmp.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
403 * region-model.h (struct setjmp_record): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
404 (class setjmp_svalue): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
405
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
406 2020-01-27 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
407
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
408 PR analyzer/93276
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
409 * analyzer.h (PUSH_IGNORE_WFORMAT, POP_IGNORE_WFORMAT): Guard these
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
410 macros with GCC_VERSION >= 4006, making them no-op otherwise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
411 * engine.cc (exploded_edge::exploded_edge): Specify template for
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
412 base class initializer.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
413 (exploded_graph::add_edge): Specify template when chaining up to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
414 base class add_edge implementation.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
415 (viz_callgraph_node::dump_dot): Drop redundant "typename".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
416 (viz_callgraph_edge::viz_callgraph_edge): Specify template for
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
417 base class initializer.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
418 * program-state.cc (sm_state_map::clone_with_remapping): Drop
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
419 redundant "typename".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
420 (sm_state_map::print): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
421 (sm_state_map::hash): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
422 (sm_state_map::operator==): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
423 (sm_state_map::remap_svalue_ids): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
424 (sm_state_map::on_svalue_purge): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
425 (sm_state_map::validate): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
426 * program-state.h (sm_state_map::iterator_t): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
427 * supergraph.h (superedge::superedge): Specify template for base
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
428 class initializer.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
429
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
430 2020-01-23 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
431
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
432 PR analyzer/93375
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
433 * supergraph.cc (callgraph_superedge::get_arg_for_parm): Fail
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
434 gracefully is the number of parameters at the callee exceeds the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
435 number of arguments at the call stmt.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
436 (callgraph_superedge::get_parm_for_arg): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
437
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
438 2020-01-22 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
439
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
440 PR analyzer/93382
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
441 * program-state.cc (sm_state_map::on_svalue_purge): If the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
442 entry survives, but the origin is being purged, then reset the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
443 origin to null.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
444
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
445 2020-01-22 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
446
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
447 * sm-signal.cc: Fix nesting of CHECKING_P and namespace ana.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
448
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
449 2020-01-22 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
450
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
451 PR analyzer/93378
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
452 * engine.cc (setjmp_svalue::compare_fields): Update for
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
453 replacement of m_enode with m_setjmp_record.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
454 (setjmp_svalue::add_to_hash): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
455 (setjmp_svalue::get_index): Rename...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
456 (setjmp_svalue::get_enode_index): ...to this.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
457 (setjmp_svalue::print_details): Update for replacement of m_enode
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
458 with m_setjmp_record.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
459 (exploded_node::on_longjmp): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
460 * exploded-graph.h (rewind_info_t::m_enode_origin): Replace...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
461 (rewind_info_t::m_setjmp_record): ...with this.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
462 (rewind_info_t::rewind_info_t): Update for replacement of m_enode
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
463 with m_setjmp_record.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
464 (rewind_info_t::get_setjmp_point): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
465 (rewind_info_t::get_setjmp_call): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
466 * region-model.cc (region_model::dump_summary_of_map): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
467 (region_model::on_setjmp): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
468 * region-model.h (struct setjmp_record): New struct.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
469 (setjmp_svalue::m_enode): Replace...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
470 (setjmp_svalue::m_setjmp_record): ...with this.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
471 (setjmp_svalue::setjmp_svalue): Update for replacement of m_enode
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
472 with m_setjmp_record.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
473 (setjmp_svalue::clone): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
474 (setjmp_svalue::get_index): Rename...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
475 (setjmp_svalue::get_enode_index): ...to this.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
476 (setjmp_svalue::get_exploded_node): Replace...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
477 (setjmp_svalue::get_setjmp_record): ...with this.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
478
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
479 2020-01-22 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
480
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
481 PR analyzer/93316
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
482 * analyzer.cc (is_setjmp_call_p): Check for "setjmp" as well as
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
483 "_setjmp".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
484
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
485 2020-01-22 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
486
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
487 PR analyzer/93307
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
488 * analysis-plan.h: Wrap everything namespace "ana".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
489 * analyzer-logging.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
490 * analyzer-logging.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
491 * analyzer-pass.cc (pass_analyzer::execute): Update for "ana"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
492 namespace.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
493 * analyzer-selftests.cc: Wrap everything namespace "ana".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
494 * analyzer-selftests.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
495 * analyzer.h: Likewise for forward decls of types.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
496 * call-string.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
497 * checker-path.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
498 * checker-path.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
499 * constraint-manager.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
500 * constraint-manager.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
501 * diagnostic-manager.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
502 * diagnostic-manager.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
503 * engine.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
504 * engine.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
505 * exploded-graph.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
506 * function-set.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
507 * function-set.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
508 * pending-diagnostic.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
509 * pending-diagnostic.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
510 * program-point.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
511 * program-point.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
512 * program-state.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
513 * program-state.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
514 * region-model.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
515 * region-model.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
516 * sm-file.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
517 * sm-malloc.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
518 * sm-pattern-test.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
519 * sm-sensitive.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
520 * sm-signal.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
521 * sm-taint.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
522 * sm.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
523 * sm.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
524 * state-purge.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
525 * supergraph.cc: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
526 * supergraph.h: Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
527
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
528 2020-01-21 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
529
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
530 PR analyzer/93352
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
531 * region-model.cc (int_cmp): Rename to...
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
532 (array_region::key_cmp): ...this, using key_t rather than int.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
533 Rewrite in terms of comparisons rather than subtraction to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
534 ensure qsort is anti-symmetric when handling extreme values.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
535 (array_region::walk_for_canonicalization): Update for above
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
536 renaming.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
537 * region-model.h (array_region::key_cmp): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
538
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
539 2020-01-17 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
540
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
541 PR analyzer/93290
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
542 * region-model.cc (region_model::eval_condition_without_cm): Avoid
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
543 gcc_unreachable for unexpected operations for the case where
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
544 we're comparing an svalue against itself.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
545
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
546 2020-01-17 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
547
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
548 PR analyzer/93281
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
549 * region-model.cc
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
550 (region_model::convert_byte_offset_to_array_index): Convert to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
551 ssizetype before dividing by byte_size. Use fold_binary rather
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
552 than fold_build2 to avoid needlessly constructing a tree for the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
553 non-const case.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
554
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
555 2020-01-15 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
556
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
557 * engine.cc (class impl_region_model_context): Fix comment.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
558
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
559 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
560
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
561 PR analyzer/93212
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
562 * region-model.cc (make_region_for_type): Use
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
563 FUNC_OR_METHOD_TYPE_P rather than comparing against FUNCTION_TYPE.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
564 * region-model.h (function_region::function_region): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
565
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
566 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
567
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
568 * program-state.cc (sm_state_map::clone_with_remapping): Copy
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
569 m_global_state.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
570 (selftest::test_program_state_merging_2): New selftest.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
571 (selftest::analyzer_program_state_cc_tests): Call it.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
572
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
573 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
574
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
575 * checker-path.h (checker_path::get_checker_event): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
576 (checker_path): Add DISABLE_COPY_AND_ASSIGN; make fields private.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
577 * diagnostic-manager.cc
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
578 (diagnostic_manager::prune_for_sm_diagnostic): Replace direct
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
579 access to checker_path::m_events with accessor functions. Fix
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
580 overlong line.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
581 (diagnostic_manager::prune_interproc_events): Replace direct
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
582 access to checker_path::m_events with accessor functions.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
583 (diagnostic_manager::finish_pruning): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
584
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
585 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
586
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
587 * checker-path.h (checker_event::clone): Delete vfunc decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
588 (debug_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
589 (custom_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
590 (statement_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
591 (function_entry_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
592 (state_change_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
593 (start_cfg_edge_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
594 (end_cfg_edge_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
595 (call_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
596 (return_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
597 (setjmp_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
598 (rewind_from_longjmp_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
599 (rewind_to_setjmp_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
600 (warning_event::clone): Delete vfunc impl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
601
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
602 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
603
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
604 * supergraph.cc (supernode::dump_dot): Ensure that the TABLE
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
605 element has at least one TR.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
606
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
607 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
608
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
609 PR analyzer/58237
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
610 * engine.cc (leak_stmt_finder::find_stmt): Use get_pure_location
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
611 when comparing against UNKNOWN_LOCATION.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
612 (stmt_requires_new_enode_p): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
613 (exploded_graph::dump_exploded_nodes): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
614 * supergraph.cc (supernode::get_start_location): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
615 (supernode::get_end_location): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
616
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
617 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
618
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
619 PR analyzer/58237
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
620 * analyzer-selftests.cc (selftest::run_analyzer_selftests): Call
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
621 selftest::analyzer_sm_file_cc_tests.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
622 * analyzer-selftests.h (selftest::analyzer_sm_file_cc_tests): New
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
623 decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
624 * sm-file.cc: Include "analyzer/function-set.h" and
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
625 "analyzer/analyzer-selftests.h".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
626 (get_file_using_fns): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
627 (is_file_using_fn_p): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
628 (fileptr_state_machine::on_stmt): Return true for known functions.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
629 (selftest::analyzer_sm_file_cc_tests): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
630
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
631 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
632
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
633 * analyzer-selftests.cc (selftest::run_analyzer_selftests): Call
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
634 selftest::analyzer_sm_signal_cc_tests.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
635 * analyzer-selftests.h (selftest::analyzer_sm_signal_cc_tests):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
636 New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
637 * sm-signal.cc: Include "analyzer/function-set.h" and
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
638 "analyzer/analyzer-selftests.h".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
639 (get_async_signal_unsafe_fns): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
640 (signal_unsafe_p): Reimplement in terms of the above.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
641 (selftest::analyzer_sm_signal_cc_tests): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
642
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
643 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
644
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
645 * analyzer-selftests.cc (selftest::run_analyzer_selftests): Call
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
646 selftest::analyzer_function_set_cc_tests.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
647 * analyzer-selftests.h (selftest::analyzer_function_set_cc_tests):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
648 New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
649 * function-set.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
650 * function-set.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
651
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
652 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
653
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
654 * analyzer.h (fndecl_has_gimple_body_p): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
655 * engine.cc (impl_region_model_context::on_unknown_change): New
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
656 function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
657 (fndecl_has_gimple_body_p): Make non-static.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
658 (exploded_node::on_stmt): Treat __analyzer_dump_exploded_nodes as
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
659 known. Track whether we have a call with unknown side-effects and
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
660 pass it to on_call_post.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
661 * exploded-graph.h (impl_region_model_context::on_unknown_change):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
662 New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
663 * program-state.cc (sm_state_map::on_unknown_change): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
664 * program-state.h (sm_state_map::on_unknown_change): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
665 * region-model.cc: Include "bitmap.h".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
666 (region_model::on_call_pre): Return a bool, capturing whether the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
667 call has unknown side effects.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
668 (region_model::on_call_post): Add arg "bool unknown_side_effects"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
669 and if true, call handle_unrecognized_call.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
670 (class reachable_regions): New class.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
671 (region_model::handle_unrecognized_call): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
672 * region-model.h (region_model::on_call_pre): Return a bool.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
673 (region_model::on_call_post): Add arg "bool unknown_side_effects".
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
674 (region_model::handle_unrecognized_call): New decl.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
675 (region_model_context::on_unknown_change): New vfunc.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
676 (test_region_model_context::on_unknown_change): New function.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
677
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
678 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
679
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
680 * diagnostic-manager.cc (saved_diagnostic::operator==): Move here
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
681 from header. Replace pointer equality test on m_var with call to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
682 pending_diagnostic::same_tree_p.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
683 * diagnostic-manager.h (saved_diagnostic::operator==): Move to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
684 diagnostic-manager.cc.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
685 * pending-diagnostic.cc (pending_diagnostic::same_tree_p): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
686 * pending-diagnostic.h (pending_diagnostic::same_tree_p): New.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
687 * sm-file.cc (file_diagnostic::subclass_equal_p): Replace pointer
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
688 equality on m_arg with call to pending_diagnostic::same_tree_p.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
689 * sm-malloc.cc (malloc_diagnostic::subclass_equal_p): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
690 (possible_null_arg::subclass_equal_p): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
691 (null_arg::subclass_equal_p): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
692 (free_of_non_heap::subclass_equal_p): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
693 * sm-pattern-test.cc (pattern_match::operator==): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
694 * sm-sensitive.cc (exposure_through_output_file::operator==):
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
695 Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
696 * sm-taint.cc (tainted_array_index::operator==): Likewise.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
697
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
698 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
699
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
700 * diagnostic-manager.cc (dedupe_winners::add): Add logging
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
701 of deduplication decisions made.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
702
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
703 2020-01-14 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
704
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
705 * ChangeLog: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
706 * analyzer-selftests.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
707 * analyzer-selftests.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
708 * analyzer.opt: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
709 * analysis-plan.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
710 * analysis-plan.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
711 * analyzer-logging.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
712 * analyzer-logging.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
713 * analyzer-pass.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
714 * analyzer.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
715 * analyzer.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
716 * call-string.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
717 * call-string.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
718 * checker-path.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
719 * checker-path.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
720 * constraint-manager.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
721 * constraint-manager.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
722 * diagnostic-manager.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
723 * diagnostic-manager.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
724 * engine.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
725 * engine.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
726 * exploded-graph.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
727 * pending-diagnostic.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
728 * pending-diagnostic.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
729 * program-point.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
730 * program-point.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
731 * program-state.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
732 * program-state.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
733 * region-model.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
734 * region-model.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
735 * sm-file.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
736 * sm-malloc.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
737 * sm-malloc.dot: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
738 * sm-pattern-test.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
739 * sm-sensitive.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
740 * sm-signal.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
741 * sm-taint.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
742 * sm.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
743 * sm.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
744 * state-purge.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
745 * state-purge.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
746 * supergraph.cc: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
747 * supergraph.h: New file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
748
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
749 2019-12-13 David Malcolm <dmalcolm@redhat.com>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
750
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
751 * Initial creation
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
752
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
753
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
754 Copyright (C) 2019-2020 Free Software Foundation, Inc.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
755
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
756 Copying and distribution of this file, with or without modification,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
757 are permitted in any medium without royalty provided the copyright
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
758 notice and this notice are preserved.