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:
> aaron.ballman wrote:
> > 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
> > ```
> Aren't all those identifiers already stolen by the standard?  They are 
> reserved already, right?  
> 
> But that behavior you post there is unfortunate... I guess leaving these as 
> warnings is important so they get suppressed in headers (for cases where a 
> C-library 'implements' it anyway, despite it being a builtin).
> 
> I think I can live with this, and I think backporting it is the least 
> breaking way to do this. 
> Aren't all those identifiers already stolen by the standard? They are 
> reserved already, right?

Yes, they are. However, the situation we should have sympathy for is a user who 
is compiling in C17 mode and using an identifier like `ckd_add` suddenly having 
that identifier stolen out from under them because C2x added that as a library 
function and we decided we wanted it to be a builtin for some reason.


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

Reply via email to