diff options
| author | Alexis Hunt <alercah@gmail.com> | 2011-05-05 00:05:47 +0000 |
|---|---|---|
| committer | Alexis Hunt <alercah@gmail.com> | 2011-05-05 00:05:47 +0000 |
| commit | e262299b72ea13afe959cd94462659618bab6d95 (patch) | |
| tree | 173e44b38ebc8e2880477e942414ae2503c00119 /clang/lib | |
| parent | a3d5d167a8cc7f0a4aa2156d2eeab6cb9bac3d4d (diff) | |
| download | bcm5719-llvm-e262299b72ea13afe959cd94462659618bab6d95.tar.gz bcm5719-llvm-e262299b72ea13afe959cd94462659618bab6d95.zip | |
Change cycle detection to be based off of a warning flag.
llvm-svn: 130898
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 5 | ||||
| -rw-r--r-- | clang/lib/Sema/Sema.cpp | 5 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 5 |
3 files changed, 6 insertions, 9 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 7a7692f3771..180ce3efcbe 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -698,9 +698,6 @@ static void LangOptsToArgs(const LangOptions &Opts, Res.push_back("-fdelayed-template-parsing"); if (Opts.Deprecated) Res.push_back("-fdeprecated-macro"); - - if (Opts.CheckDelegatingCtorCycles) - Res.push_back("-fcheck-delegating-ctor-cycles"); } static void PreprocessorOptsToArgs(const PreprocessorOptions &Opts, @@ -1569,8 +1566,6 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK, Opts.MRTD = Args.hasArg(OPT_mrtd); Opts.FakeAddressSpaceMap = Args.hasArg(OPT_ffake_address_space_map); Opts.ParseUnknownAnytype = Args.hasArg(OPT_funknown_anytype); - Opts.CheckDelegatingCtorCycles - = !Args.hasArg(OPT_fno_check_delegating_ctor_cycles); // Record whether the __DEPRECATED define was requested. Opts.Deprecated = Args.hasFlag(OPT_fdeprecated_macro, diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index ec2c7392287..c47827153d0 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -474,7 +474,10 @@ void Sema::ActOnEndOfTranslationUnit() { } - if (LangOpts.CPlusPlus0x && LangOpts.CheckDelegatingCtorCycles) + if (LangOpts.CPlusPlus0x && + Diags.getDiagnosticLevel(diag::warn_delegating_ctor_cycle, + SourceLocation()) + != Diagnostic::Ignored) CheckDelegatingCtorCycles(); // If there were errors, disable 'unused' warnings since they will mostly be diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index bb732e2c9fe..7b286968144 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -2085,8 +2085,7 @@ Sema::SetDelegatingInitializer(CXXConstructorDecl *Constructor, DiagnoseUseOfDecl(Dtor, Initializer->getSourceLocation()); } - if (LangOpts.CheckDelegatingCtorCycles) - DelegatingCtorDecls.push_back(Constructor); + DelegatingCtorDecls.push_back(Constructor); return false; } @@ -7984,7 +7983,7 @@ void DelegatingCycleHelper(CXXConstructorDecl* Ctor, // If we haven't diagnosed this cycle yet, do so now. if (!Invalid.count(TCanonical)) { S.Diag((*Ctor->init_begin())->getSourceLocation(), - diag::err_delegating_ctor_cycle) + diag::warn_delegating_ctor_cycle) << Ctor; // Don't add a note for a function delegating directo to itself. |

