summaryrefslogtreecommitdiffstats
path: root/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2012-05-12 00:32:07 +0000
committerBill Wendling <isanbard@gmail.com>2012-05-12 00:32:07 +0000
commitf72a5ec851d3f236115454114522198618c6aec3 (patch)
tree7275e3ce5c79fe0b858cc51c126c5c0ef9496b86 /lib/Sema/SemaDeclCXX.cpp
parentc0a53d686f6602e0ef32d0ce04d79482f966557b (diff)
Merging r156031:
------------------------------------------------------------------------ r156031 | rsmith | 2012-05-02 15:22:32 -0700 (Wed, 02 May 2012) | 4 lines Revert most of r154844, which was disabled in r155975. Keep around the refactorings in that revision, and some of the subsequent bugfixes, which seem to be relevant even without delayed exception specification parsing. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_31@156684 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--lib/Sema/SemaDeclCXX.cpp64
1 files changed, 0 insertions, 64 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index f5334efbec..c861072ad7 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -11298,70 +11298,6 @@ Sema::checkExceptionSpecification(ExceptionSpecificationType EST,
}
}
-void Sema::actOnDelayedExceptionSpecification(Decl *MethodD,
- ExceptionSpecificationType EST,
- SourceRange SpecificationRange,
- ArrayRef<ParsedType> DynamicExceptions,
- ArrayRef<SourceRange> DynamicExceptionRanges,
- Expr *NoexceptExpr) {
- if (!MethodD)
- return;
-
- // Dig out the method we're referring to.
- CXXMethodDecl *Method = 0;
- if (FunctionTemplateDecl *FunTmpl = dyn_cast<FunctionTemplateDecl>(MethodD))
- Method = dyn_cast<CXXMethodDecl>(FunTmpl->getTemplatedDecl());
- else
- Method = dyn_cast<CXXMethodDecl>(MethodD);
-
- if (!Method)
- return;
-
- // Dig out the prototype, looking through only parens. This should never fail.
- const FunctionProtoType *Proto
- = cast<FunctionProtoType>(Method->getType().IgnoreParens());
-
- // Check the exception specification.
- llvm::SmallVector<QualType, 4> Exceptions;
- FunctionProtoType::ExtProtoInfo EPI = Proto->getExtProtoInfo();
- checkExceptionSpecification(EST, DynamicExceptions, DynamicExceptionRanges,
- NoexceptExpr, Exceptions, EPI);
-
- // Rebuild the function type.
- QualType T = Context.getFunctionType(Proto->getResultType(),
- Proto->arg_type_begin(),
- Proto->getNumArgs(),
- EPI);
-
- // Rebuild any parens around the function type.
- for (const ParenType *PT = dyn_cast<ParenType>(Method->getType()); PT;
- PT = dyn_cast<ParenType>(PT->getInnerType()))
- T = Context.getParenType(T);
-
- if (TypeSourceInfo *TSInfo = Method->getTypeSourceInfo()) {
- // FIXME: When we get proper type location information for exceptions,
- // we'll also have to rebuild the TypeSourceInfo. For now, we just patch
- // up the TypeSourceInfo;
- assert(TypeLoc::getFullDataSizeForType(T)
- == TypeLoc::getFullDataSizeForType(Method->getType()) &&
- "TypeLoc size mismatch with delayed exception specification");
- TSInfo->overrideType(T);
- }
-
- Method->setType(T);
-
- if (Method->isStatic())
- checkThisInStaticMemberFunctionExceptionSpec(Method);
-
- if (Method->isVirtual()) {
- // Check overrides, which we previously had to delay.
- for (CXXMethodDecl::method_iterator O = Method->begin_overridden_methods(),
- OEnd = Method->end_overridden_methods();
- O != OEnd; ++O)
- CheckOverridingFunctionExceptionSpec(Method, *O);
- }
-}
-
/// IdentifyCUDATarget - Determine the CUDA compilation target for this function
Sema::CUDAFunctionTarget Sema::IdentifyCUDATarget(const FunctionDecl *D) {
// Implicitly declared functions (e.g. copy constructors) are