@@ -616,6 +616,8 @@ maybe_undo_optimize_bit_field_compare (tree type,
tree cst,
const svalue *arg1)
{
+ if (!type)
+ return nullptr;
if (!INTEGRAL_TYPE_P (type))
return NULL;
@@ -5781,7 +5781,8 @@ apply_constraints_for_gswitch (const switch_cfg_superedge &edge,
&& is_a <const initial_svalue *> (unaryop->get_arg ()))
if (const initial_svalue *initvalop = (as_a <const initial_svalue *>
(unaryop->get_arg ())))
- if (TREE_CODE (initvalop->get_type ()) == ENUMERAL_TYPE)
+ if (initvalop->get_type ()
+ && TREE_CODE (initvalop->get_type ()) == ENUMERAL_TYPE)
{
index_sval = initvalop;
check_index_type = false;
Fixes some ICEs seen analyzing the Linux kernel. Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu. Pushed to trunk as r14-9762-ge945d322fcbc68. gcc/analyzer/ChangeLog: * region-model-manager.cc (maybe_undo_optimize_bit_field_compare): Guard against null types. * region-model.cc (apply_constraints_for_gswitch): Likewise. Signed-off-by: David Malcolm <dmalcolm@redhat.com> --- gcc/analyzer/region-model-manager.cc | 2 ++ gcc/analyzer/region-model.cc | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-)