analyzer: fix ICE on machine-specific builtins [PR96962]
authorDavid Malcolm <dmalcolm@redhat.com>
Mon, 7 Sep 2020 21:16:37 +0000 (17:16 -0400)
committerDavid Malcolm <dmalcolm@redhat.com>
Tue, 8 Sep 2020 14:49:05 +0000 (10:49 -0400)
commit47997a32e63b77ec88a7131a5d540f108c698661
treedc2f7b610852d37f05a40a0a8dbd2efb3de58487
parent19b0fed7c2d3663f0f144ca8557b6af29bafa4e3
analyzer: fix ICE on machine-specific builtins [PR96962]

In g:ee7bfbe5eb70a23bbf3a2cedfdcbd2ea1a20c3f2 I added a
  switch (DECL_UNCHECKED_FUNCTION_CODE (callee_fndecl))
to region_model::on_call_pre guarded by
  fndecl_built_in_p (callee_fndecl).
I meant to handle only normal built-ins, whereas this
single-argument overload of fndecl_built_in_p returns true for any
kind of built-in.

PR analyzer/96962 reports a case where this matches for a
machine-specific builtin, leading to an ICE.  Fixed thusly.

gcc/analyzer/ChangeLog:
PR analyzer/96962
* region-model.cc (region_model::on_call_pre): Fix guard on switch
on built-ins to only consider BUILT_IN_NORMAL, rather than other
kinds of build-ins.
gcc/analyzer/region-model.cc