deansturtevant added a comment.

Note that some fix is important to make if we think that the 
-Wmissing-prototypes warning is valuable, because there are cases where it 
currently would fire where the function cannot explicitly be given internal 
linkage, e.g.
namespace {
struct Initialized {};
}  // namespace
void* operator new(size_t size, const Initialized&) {

  void* p = malloc(size);
  memset(p, 0, size);
  return p;

}
operator new is only allowed to be defined in the global namespace.
Currently this will cause the warning to be emitted, even though there is no 
way to declare it outside the TU.

jyknight clarified that what he was proposing was that instead of calling 
FD->isExternallyVisible() as currently written, call a function which does the 
same thing except that it doesn't check whether the struct has a visible name 
(because that can be assumed here).
This function *could* be isExternallyVisible with a new boolean argument (WDYT?)
Another approach would be to move the call to 
ShouldWarnAboutMissingPrototypes() to a different point in the process, where 
calling isExternallyVisible() is *not* problematic. WDYT?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D121328/new/

https://reviews.llvm.org/D121328

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to