This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH to fix -Wrestrict ICE (PR middle-end/83463)


Hi Martin,

> In all cases all the information necessary to detect and diagnose
> or even avoid the problem is available.  In fact, one might argue
> that optimizing such calls (expanding them inline) would be
> preferable to doing nothing and allowing the undefined behavior
> to cause a bug at runtime.

I think the right thing to do here would emit a warning for
declaring the builtin with the wrong prototype.

If you try to do the equivalent in C++ you get this:

cat test.cc
extern "C" void* memcpy (...);

void p (void *d, const void *s)
{
  memcpy (d, s, 0);
}

 g++ -S  test.cc
test.cc:1:18: warning: declaration of ‘void* memcpy(...)’ conflicts with built-in declaration ‘void* memcpy(void*, const void*, long unsigned int)’ [-Wbuiltin-declaration-mismatch]
 extern "C" void* memcpy (...);
                  ^~~~~~

You get the same warning in C when the Prototype does not match,
but unfortunately not when the prototype is missing.

I would prefer the same warning in C whenever the declaration does
not match.


Bernd.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]