PR analyzer/93950 reports an ICE when pruning the path of a -Wanalyzer-null-dereference diagnostic. The root cause is a bug in the state-tracking code, in which the variable of interest is tracked from the callee to a "nullptr" param at the caller, whereupon we have an INTEGER_CST "variable", and the attempt to look up its lvalue fails. This code could use a rewrite; in the meantime this patch extends the bulletproofing from g:8525d1f5 for PR analyzer/93544 to all of the various places where var can be updated, fixing the ICE. gcc/analyzer/ChangeLog: PR analyzer/93950 * diagnostic-manager.cc (diagnostic_manager::prune_for_sm_diagnostic): Assert that var is either NULL or not a constant. When updating var, bulletproof against constant values. gcc/testsuite/ChangeLog: PR analyzer/93950 * g++.dg/analyzer/pr93950.C: New test.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| ChangeLog | Loading commit data... | |
| analysis-plan.cc | Loading commit data... | |
| analysis-plan.h | Loading commit data... | |
| analyzer-logging.cc | Loading commit data... | |
| analyzer-logging.h | Loading commit data... | |
| analyzer-pass.cc | Loading commit data... | |
| analyzer-selftests.cc | Loading commit data... | |
| analyzer-selftests.h | Loading commit data... | |
| analyzer.cc | Loading commit data... | |
| analyzer.h | Loading commit data... | |
| analyzer.opt | Loading commit data... | |
| bar-chart.cc | Loading commit data... | |
| bar-chart.h | Loading commit data... | |
| call-string.cc | Loading commit data... | |
| call-string.h | Loading commit data... | |
| checker-path.cc | Loading commit data... | |
| checker-path.h | Loading commit data... | |
| constraint-manager.cc | Loading commit data... | |
| constraint-manager.h | Loading commit data... | |
| diagnostic-manager.cc | Loading commit data... | |
| diagnostic-manager.h | Loading commit data... | |
| engine.cc | Loading commit data... | |
| engine.h | Loading commit data... | |
| exploded-graph.h | Loading commit data... | |
| function-set.cc | Loading commit data... | |
| function-set.h | Loading commit data... | |
| pending-diagnostic.cc | Loading commit data... | |
| pending-diagnostic.h | Loading commit data... | |
| program-point.cc | Loading commit data... | |
| program-point.h | Loading commit data... | |
| program-state.cc | Loading commit data... | |
| program-state.h | Loading commit data... | |
| reachability.h | Loading commit data... | |
| region-model.cc | Loading commit data... | |
| region-model.h | Loading commit data... | |
| sm-file.cc | Loading commit data... | |
| sm-malloc.cc | Loading commit data... | |
| sm-malloc.dot | Loading commit data... | |
| sm-pattern-test.cc | Loading commit data... | |
| sm-sensitive.cc | Loading commit data... | |
| sm-signal.cc | Loading commit data... | |
| sm-taint.cc | Loading commit data... | |
| sm.cc | Loading commit data... | |
| sm.h | Loading commit data... | |
| state-purge.cc | Loading commit data... | |
| state-purge.h | Loading commit data... | |
| supergraph.cc | Loading commit data... | |
| supergraph.h | Loading commit data... |