summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-10-21 16:57:46 +0000
committerDouglas Gregor <dgregor@apple.com>2010-10-21 16:57:46 +0000
commitbff62031529e651942326b13596b34fd4d96bac7 (patch)
tree45149e7addb1b25b7642c378f250684c058fba20 /clang/lib/Sema/SemaDecl.cpp
parent096011eebf38d2c637ccac8906f03773d218b859 (diff)
downloadbcm5719-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.cpp5
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) {
OpenPOWER on IntegriCloud