https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83603
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-12-31 Ever confirmed|0 |1 --- Comment #4 from Martin Sebor <msebor at gcc dot gnu.org> --- Confirmed. The pass assumes each built-in function has been declared with prototype (either implicitly by GCC itself or explicitly in the program) and is not prepared to handle calls to functions declared without a prototype that have the wrong number or type of arguments like in gcc/testsuite/gcc.target/i386/pr65523.c: /* PR target/65523 */ /* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx" } */ void *memmove (); void * bar () { return memmove (); } The test case above is another instance of the problem reported in bug 83463. Besides the ICE (which, of course, has to be fixed), it also illustrates GCC's failing to diagnose such invalid calls (see also the discussion https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01184.html for additional background).