diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-01-12 01:47:40 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-01-12 01:47:40 +0000 |
| commit | 7cf35ef8f6a0e507ef1712685d4ac7b39c3246f5 (patch) | |
| tree | 8182e77e034f35658d03063c67d1cf5901527b57 /clang | |
| parent | 399bf618de05d4834ec31059230440ccf9d192e4 (diff) | |
| download | bcm5719-llvm-7cf35ef8f6a0e507ef1712685d4ac7b39c3246f5.tar.gz bcm5719-llvm-7cf35ef8f6a0e507ef1712685d4ac7b39c3246f5.zip | |
Fix a regression from 171193: main cannot be overloaded.
Thanks Eli Friedman for noticing it.
llvm-svn: 172292
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 5 | ||||
| -rw-r--r-- | clang/test/SemaCXX/overload-decl.cpp | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index bb38222a654..44ff3a505e4 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -935,6 +935,11 @@ static bool canBeOverloaded(const FunctionDecl &D) { return true; if (D.hasCLanguageLinkage()) return false; + + // Main cannot be overloaded (basic.start.main). + if (D.isMain()) + return false; + return true; } diff --git a/clang/test/SemaCXX/overload-decl.cpp b/clang/test/SemaCXX/overload-decl.cpp index c610ff7ab06..9bba47adfdd 100644 --- a/clang/test/SemaCXX/overload-decl.cpp +++ b/clang/test/SemaCXX/overload-decl.cpp @@ -29,3 +29,6 @@ class X { static void g(float); static void g(int); // expected-error {{static and non-static member functions with the same parameter types cannot be overloaded}} }; + +int main() {} // expected-note {{previous definition is here}} +int main(int,char**) {} // expected-error {{conflicting types for 'main'}} |

