diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-10-21 16:57:46 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-10-21 16:57:46 +0000 |
| commit | bff62031529e651942326b13596b34fd4d96bac7 (patch) | |
| tree | 45149e7addb1b25b7642c378f250684c058fba20 /clang/lib/Sema/SemaDecl.cpp | |
| parent | 096011eebf38d2c637ccac8906f03773d218b859 (diff) | |
| download | bcm5719-llvm-bff62031529e651942326b13596b34fd4d96bac7.tar.gz bcm5719-llvm-bff62031529e651942326b13596b34fd4d96bac7.zip | |
Always treat 'main' as an extern "C" function, so that we detect
redeclarations of main appropriately rather than allowing it to be
overloaded. Also, disallowing declaring main as a template.
Fixes GCC DejaGNU g++.old-deja/g++.other/main1.C.
llvm-svn: 117029
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 57cbb46480b..f1045d3c0b7 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -4182,6 +4182,11 @@ void Sema::CheckMain(FunctionDecl* FD) { if (nparams == 1 && !FD->isInvalidDecl()) { Diag(FD->getLocation(), diag::warn_main_one_arg); } + + if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) { + Diag(FD->getLocation(), diag::err_main_template_decl); + FD->setInvalidDecl(); + } } bool Sema::CheckForConstantInitializer(Expr *Init, QualType DclT) { |

