aaron.ballman added inline comments.
================ Comment at: clang/test/Sema/prototype-redecls.c:32 // clear that the previous declaration was a builtin. -float rintf() { // expected-error {{conflicting types for 'rintf'}} \ +float rintf() { // expected-warning {{incompatible redeclaration of library function 'rintf'}} \ expected-note {{'rintf' is a builtin with type 'float (float)'}} ---------------- erichkeane wrote: > Hmm... this is a definition of a builtin with a completely incompatible > prototype. Do we REALLY want this to not be an error? > > I guess I could see it being OK with declarations, but it is odd with a > definition that is incompatible. I think we do want it to not be an error. The user has no choice in whether these are predeclared or not, which steals identifiers from users. By giving the user a warning, they're alerted to the fact they're doing something that may be highly confusing, so I agree we definitely want a diagnostic. If we give the user an error, they're stuck. Also, it's even weirder that: ``` float rintf(void) {} // Always a warning, is fine float rintf() {} // Error pre C2x, but fine in C2x ``` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131499/new/ https://reviews.llvm.org/D131499 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits