mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-20 10:07:02 +00:00
Change prototype merging error into a warning for builtins
As was observed in https://reviews.llvm.org/D123627#3707635, it's confusing that a user can write: ``` float rintf(void) {} ``` and get a warning, but writing: ``` float rintf() {} ``` gives an error. This patch changes the behavior so that both are warnings, so that users who have functions which conflict with a builtin identifier can still use that identifier as they wish. Differential Revision: https://reviews.llvm.org/D131499
This commit is contained in:
parent
d79e7dc939
commit
4c02ab8c97
@ -4042,7 +4042,7 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S,
|
||||
// default argument promotion rules were already checked by
|
||||
// ASTContext::typesAreCompatible().
|
||||
if (Old->hasPrototype() && !New->hasWrittenPrototype() && NewDeclIsDefn &&
|
||||
Old->getNumParams() != New->getNumParams()) {
|
||||
Old->getNumParams() != New->getNumParams() && !Old->isImplicit()) {
|
||||
if (Old->hasInheritedPrototype())
|
||||
Old = Old->getCanonicalDecl();
|
||||
Diag(New->getLocation(), diag::err_conflicting_types) << New;
|
||||
|
@ -29,7 +29,7 @@ void garp(x) int x; {}
|
||||
|
||||
// Ensure redeclarations that conflict with a builtin use a note which makes it
|
||||
// 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)'}}
|
||||
return 1.0f;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user