]> granicus.if.org Git - clang/commitdiff
Get rid of outdated code that masks type errors. Fixes PR2036.
authorEli Friedman <eli.friedman@gmail.com>
Fri, 15 Feb 2008 06:56:02 +0000 (06:56 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Fri, 15 Feb 2008 06:56:02 +0000 (06:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47154 91177308-0d34-0410-b5e6-96231b3b80d8

Sema/SemaDecl.cpp
test/Sema/function.c

index b14e20b2c373a8b8d7533375493f209aa2a863db..fc60a7a4aa59aafa58500a45c4182f0241a347a8 100644 (file)
@@ -258,16 +258,6 @@ FunctionDecl *Sema::MergeFunctionDecl(FunctionDecl *New, ScopedDecl *OldD) {
   QualType OldQType = Old->getCanonicalType();
   QualType NewQType = New->getCanonicalType();
   
-  // This is not right, but it's a start.
-  // If Old is a function prototype with no defined arguments we only compare 
-  // the return type;  If arguments are defined on the prototype we validate the
-  // entire function type.
-  // FIXME: We should link up decl objects here.
-  if (Old->getBody() == 0) {
-    if (OldQType.getTypePtr()->getTypeClass() == Type::FunctionNoProto && 
-        Old->getResultType() == New->getResultType())
-      return New;
-  }
   // Function types need to be compatible, not identical. This handles
   // duplicate function decls like "void f(int); void f(enum X);" properly.
   if (Context.functionTypesAreCompatible(OldQType, NewQType))
index a75814ee45e31b9176f9bb161b273ad77a013566..8ef453581fc8f89be6e7d87d4b405ec1d1c71146 100644 (file)
@@ -13,6 +13,8 @@ void g(int (*)(const void **, const void **));
 void g(int (*compar)()) {
 }
 
+void h();  //expected-error{{previous declaration is here}}
+void h (const char *fmt, ...) {} //expected-error{{conflicting types for 'h'}}
 
 // PR1965
 int t5(b);          // expected-error {{parameter list without types}}