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

Reply via email to