r318753 - [Analyzer] Revert r318750 because incorrect files were added for commit.
Aleksei Sidorin via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 21 03:20:07 PST 2017
Author: a.sidorin
Date: Tue Nov 21 03:20:07 2017
New Revision: 318753
URL: http://llvm.org/viewvc/llvm-project?rev=318753&view=rev
Log:
[Analyzer] Revert r318750 because incorrect files were added for commit.
Sorry for the noise.
Removed:
cfe/trunk/test/Analysis/cfg-indirect-goto-determinism.cpp
Modified:
cfe/trunk/lib/AST/ASTImporter.cpp
Modified: cfe/trunk/lib/AST/ASTImporter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTImporter.cpp?rev=318753&r1=318752&r2=318753&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ASTImporter.cpp (original)
+++ cfe/trunk/lib/AST/ASTImporter.cpp Tue Nov 21 03:20:07 2017
@@ -58,7 +58,7 @@ namespace clang {
QualType VisitExtVectorType(const ExtVectorType *T);
QualType VisitFunctionNoProtoType(const FunctionNoProtoType *T);
QualType VisitFunctionProtoType(const FunctionProtoType *T);
- QualType VisitUnresolvedUsingType(const UnresolvedUsingType *T);
+ // FIXME: UnresolvedUsingType
QualType VisitParenType(const ParenType *T);
QualType VisitTypedefType(const TypedefType *T);
QualType VisitTypeOfExprType(const TypeOfExprType *T);
@@ -129,8 +129,8 @@ namespace clang {
TemplateParameterList *ImportTemplateParameterList(
TemplateParameterList *Params);
TemplateArgument ImportTemplateArgument(const TemplateArgument &From);
- Optional<TemplateArgumentLoc> ImportTemplateArgumentLoc(
- const TemplateArgumentLoc &TALoc);
+ TemplateArgumentLoc ImportTemplateArgumentLoc(
+ const TemplateArgumentLoc &TALoc, bool &Error);
bool ImportTemplateArguments(const TemplateArgument *FromArgs,
unsigned NumFromArgs,
SmallVectorImpl<TemplateArgument> &ToArgs);
@@ -143,12 +143,10 @@ namespace clang {
bool IsStructuralMatch(ClassTemplateDecl *From, ClassTemplateDecl *To);
bool IsStructuralMatch(VarTemplateDecl *From, VarTemplateDecl *To);
Decl *VisitDecl(Decl *D);
- Decl *VisitEmptyDecl(EmptyDecl *D);
Decl *VisitAccessSpecDecl(AccessSpecDecl *D);
Decl *VisitStaticAssertDecl(StaticAssertDecl *D);
Decl *VisitTranslationUnitDecl(TranslationUnitDecl *D);
Decl *VisitNamespaceDecl(NamespaceDecl *D);
- Decl *VisitNamespaceAliasDecl(NamespaceAliasDecl *D);
Decl *VisitTypedefNameDecl(TypedefNameDecl *D, bool IsAlias);
Decl *VisitTypedefDecl(TypedefDecl *D);
Decl *VisitTypeAliasDecl(TypeAliasDecl *D);
@@ -174,12 +172,6 @@ namespace clang {
Decl *VisitObjCCategoryDecl(ObjCCategoryDecl *D);
Decl *VisitObjCProtocolDecl(ObjCProtocolDecl *D);
Decl *VisitLinkageSpecDecl(LinkageSpecDecl *D);
- Decl *VisitUsingDecl(UsingDecl *D);
- Decl *VisitUsingShadowDecl(UsingShadowDecl *D);
- Decl *VisitUsingDirectiveDecl(UsingDirectiveDecl *D);
- Decl *VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D);
- Decl *VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D);
-
ObjCTypeParamList *ImportObjCTypeParamList(ObjCTypeParamList *list);
Decl *VisitObjCInterfaceDecl(ObjCInterfaceDecl *D);
@@ -577,22 +569,6 @@ QualType ASTNodeImporter::VisitFunctionP
return Importer.getToContext().getFunctionType(ToResultType, ArgTypes, ToEPI);
}
-QualType ASTNodeImporter::VisitUnresolvedUsingType(
- const UnresolvedUsingType *T) {
- UnresolvedUsingTypenameDecl *ToD = cast_or_null<UnresolvedUsingTypenameDecl>(
- Importer.Import(T->getDecl()));
- if (!ToD)
- return QualType();
-
- UnresolvedUsingTypenameDecl *ToPrevD =
- cast_or_null<UnresolvedUsingTypenameDecl>(
- Importer.Import(T->getDecl()->getPreviousDecl()));
- if (!ToPrevD && T->getDecl()->getPreviousDecl())
- return QualType();
-
- return Importer.getToContext().getTypeDeclType(ToD, ToPrevD);
-}
-
QualType ASTNodeImporter::VisitParenType(const ParenType *T) {
QualType ToInnerType = Importer.Import(T->getInnerType());
if (ToInnerType.isNull())
@@ -1207,8 +1183,9 @@ ASTNodeImporter::ImportTemplateArgument(
llvm_unreachable("Invalid template argument kind");
}
-Optional<TemplateArgumentLoc>
-ASTNodeImporter::ImportTemplateArgumentLoc(const TemplateArgumentLoc &TALoc) {
+TemplateArgumentLoc ASTNodeImporter::ImportTemplateArgumentLoc(
+ const TemplateArgumentLoc &TALoc, bool &Error) {
+ Error = false;
TemplateArgument Arg = ImportTemplateArgument(TALoc.getArgument());
TemplateArgumentLocInfo FromInfo = TALoc.getLocInfo();
TemplateArgumentLocInfo ToInfo;
@@ -1216,12 +1193,12 @@ ASTNodeImporter::ImportTemplateArgumentL
Expr *E = Importer.Import(FromInfo.getAsExpr());
ToInfo = TemplateArgumentLocInfo(E);
if (!E)
- return None;
+ Error = true;
} else if (Arg.getKind() == TemplateArgument::Type) {
if (TypeSourceInfo *TSI = Importer.Import(FromInfo.getAsTypeSourceInfo()))
ToInfo = TemplateArgumentLocInfo(TSI);
else
- return None;
+ Error = true;
} else {
ToInfo = TemplateArgumentLocInfo(
Importer.Import(FromInfo.getTemplateQualifierLoc()),
@@ -1311,28 +1288,6 @@ Decl *ASTNodeImporter::VisitDecl(Decl *D
return nullptr;
}
-Decl *ASTNodeImporter::VisitEmptyDecl(EmptyDecl *D) {
- // Import the context of this declaration.
- DeclContext *DC = Importer.ImportContext(D->getDeclContext());
- if (!DC)
- return nullptr;
-
- DeclContext *LexicalDC = DC;
- if (D->getDeclContext() != D->getLexicalDeclContext()) {
- LexicalDC = Importer.ImportContext(D->getLexicalDeclContext());
- if (!LexicalDC)
- return nullptr;
- }
-
- // Import the location of this declaration.
- SourceLocation Loc = Importer.Import(D->getLocation());
-
- EmptyDecl *ToD = EmptyDecl::Create(Importer.getToContext(), DC, Loc);
- ToD->setLexicalDeclContext(LexicalDC);
- LexicalDC->addDeclInternal(ToD);
- return ToD;
-}
-
Decl *ASTNodeImporter::VisitTranslationUnitDecl(TranslationUnitDecl *D) {
TranslationUnitDecl *ToD =
Importer.getToContext().getTranslationUnitDecl();
@@ -1467,44 +1422,6 @@ Decl *ASTNodeImporter::VisitNamespaceDec
return ToNamespace;
}
-Decl *ASTNodeImporter::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) {
- // Import the major distinguishing characteristics of this namespace.
- DeclContext *DC, *LexicalDC;
- DeclarationName Name;
- SourceLocation Loc;
- NamedDecl *LookupD;
- if (ImportDeclParts(D, DC, LexicalDC, Name, LookupD, Loc))
- return nullptr;
- if (LookupD)
- return LookupD;
-
- // NOTE: No any conflict resolution is done for namespace aliases.
-
- NamespaceDecl *TargetDecl = cast<NamespaceDecl>(
- Importer.Import(D->getNamespace()));
- if (!TargetDecl)
- return nullptr;
-
- IdentifierInfo *ToII = Importer.Import(D->getIdentifier());
- if (!ToII)
- return nullptr;
-
- NestedNameSpecifierLoc ToQLoc = Importer.Import(D->getQualifierLoc());
- if (D->getQualifierLoc() && !ToQLoc)
- return nullptr;
-
- NamespaceAliasDecl *ToD = NamespaceAliasDecl::Create(
- Importer.getToContext(), DC, Importer.Import(D->getNamespaceLoc()),
- Importer.Import(D->getAliasLoc()), ToII, ToQLoc,
- Importer.Import(D->getTargetNameLoc()), TargetDecl);
-
- ToD->setLexicalDeclContext(LexicalDC);
- Importer.Imported(D, ToD);
- LexicalDC->addDeclInternal(ToD);
-
- return ToD;
-}
-
Decl *ASTNodeImporter::VisitTypedefNameDecl(TypedefNameDecl *D, bool IsAlias) {
// Import the major distinguishing characteristics of this typedef.
DeclContext *DC, *LexicalDC;
@@ -1904,31 +1821,6 @@ Decl *ASTNodeImporter::VisitRecordDecl(R
}
D2 = D2CXX;
D2->setAccess(D->getAccess());
-
- Importer.Imported(D, D2);
-
- if (ClassTemplateDecl *FromDescribed =
- DCXX->getDescribedClassTemplate()) {
- ClassTemplateDecl *ToDescribed = cast_or_null<ClassTemplateDecl>(
- Importer.Import(FromDescribed));
- if (!ToDescribed)
- return nullptr;
- D2CXX->setDescribedClassTemplate(ToDescribed);
-
- } else if (MemberSpecializationInfo *MemberInfo =
- DCXX->getMemberSpecializationInfo()) {
- TemplateSpecializationKind SK =
- MemberInfo->getTemplateSpecializationKind();
- CXXRecordDecl *FromInst = DCXX->getInstantiatedFromMemberClass();
- CXXRecordDecl *ToInst =
- cast_or_null<CXXRecordDecl>(Importer.Import(FromInst));
- if (FromInst && !ToInst)
- return nullptr;
- D2CXX->setInstantiationOfMemberClass(ToInst, SK);
- D2CXX->getMemberSpecializationInfo()->setPointOfInstantiation(
- Importer.Import(MemberInfo->getPointOfInstantiation()));
- }
-
} else {
D2 = RecordDecl::Create(Importer.getToContext(), D->getTagKind(),
DC, StartLoc, Loc, Name.getAsIdentifierInfo());
@@ -3068,176 +2960,6 @@ Decl *ASTNodeImporter::VisitLinkageSpecD
return ToLinkageSpec;
}
-Decl *ASTNodeImporter::VisitUsingDecl(UsingDecl *D) {
- DeclContext *DC, *LexicalDC;
- DeclarationName Name;
- SourceLocation Loc;
- NamedDecl *ToD = nullptr;
- if (ImportDeclParts(D, DC, LexicalDC, Name, ToD, Loc))
- return nullptr;
- if (ToD)
- return ToD;
-
- DeclarationNameInfo NameInfo(Name,
- Importer.Import(D->getNameInfo().getLoc()));
- ImportDeclarationNameLoc(D->getNameInfo(), NameInfo);
-
- UsingDecl *ToUsing = UsingDecl::Create(Importer.getToContext(), DC,
- Importer.Import(D->getUsingLoc()),
- Importer.Import(D->getQualifierLoc()),
- NameInfo, D->hasTypename());
- ToUsing->setLexicalDeclContext(LexicalDC);
- LexicalDC->addDeclInternal(ToUsing);
- Importer.Imported(D, ToUsing);
-
- if (NamedDecl *FromPattern =
- Importer.getFromContext().getInstantiatedFromUsingDecl(D)) {
- if (NamedDecl *ToPattern =
- dyn_cast_or_null<NamedDecl>(Importer.Import(FromPattern)))
- Importer.getToContext().setInstantiatedFromUsingDecl(ToUsing, ToPattern);
- else
- return nullptr;
- }
-
- for (UsingShadowDecl *FromShadow : D->shadows()) {
- if (UsingShadowDecl *ToShadow =
- dyn_cast_or_null<UsingShadowDecl>(Importer.Import(FromShadow)))
- ToUsing->addShadowDecl(ToShadow);
- else
- // FIXME: We return a nullptr here but the definition is already created
- // and available with lookups. How to fix this?..
- return nullptr;
- }
- return ToUsing;
-}
-
-Decl *ASTNodeImporter::VisitUsingShadowDecl(UsingShadowDecl *D) {
- DeclContext *DC, *LexicalDC;
- DeclarationName Name;
- SourceLocation Loc;
- NamedDecl *ToD = nullptr;
- if (ImportDeclParts(D, DC, LexicalDC, Name, ToD, Loc))
- return nullptr;
- if (ToD)
- return ToD;
-
- UsingDecl *ToUsing = dyn_cast_or_null<UsingDecl>(
- Importer.Import(D->getUsingDecl()));
- if (!ToUsing)
- return nullptr;
-
- NamedDecl *ToTarget = dyn_cast_or_null<NamedDecl>(
- Importer.Import(D->getTargetDecl()));
- if (!ToTarget)
- return nullptr;
-
- UsingShadowDecl *ToShadow = UsingShadowDecl::Create(
- Importer.getToContext(), DC, Loc, ToUsing, ToTarget);
-
- ToShadow->setLexicalDeclContext(LexicalDC);
- ToShadow->setAccess(D->getAccess());
- Importer.Imported(D, ToShadow);
-
- if (UsingShadowDecl *FromPattern =
- Importer.getFromContext().getInstantiatedFromUsingShadowDecl(D)) {
- if (UsingShadowDecl *ToPattern =
- dyn_cast_or_null<UsingShadowDecl>(Importer.Import(FromPattern)))
- Importer.getToContext().setInstantiatedFromUsingShadowDecl(ToShadow,
- ToPattern);
- else
- return nullptr;
- }
-
- LexicalDC->addDeclInternal(ToShadow);
-
- return ToShadow;
-}
-
-
-Decl *ASTNodeImporter::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) {
- DeclContext *DC, *LexicalDC;
- DeclarationName Name;
- SourceLocation Loc;
- NamedDecl *ToD = nullptr;
- if (ImportDeclParts(D, DC, LexicalDC, Name, ToD, Loc))
- return nullptr;
- if (ToD)
- return ToD;
-
- DeclContext *ToComAncestor = Importer.ImportContext(D->getCommonAncestor());
- if (!ToComAncestor)
- return nullptr;
-
- NamespaceDecl *ToNominated = cast_or_null<NamespaceDecl>(
- Importer.Import(D->getNominatedNamespace()));
- if (!ToNominated)
- return nullptr;
-
- UsingDirectiveDecl *ToUsingDir = UsingDirectiveDecl::Create(
- Importer.getToContext(), DC, Importer.Import(D->getUsingLoc()),
- Importer.Import(D->getNamespaceKeyLocation()),
- Importer.Import(D->getQualifierLoc()),
- Importer.Import(D->getIdentLocation()), ToNominated, ToComAncestor);
- ToUsingDir->setLexicalDeclContext(LexicalDC);
- LexicalDC->addDeclInternal(ToUsingDir);
- Importer.Imported(D, ToUsingDir);
-
- return ToUsingDir;
-}
-
-Decl *ASTNodeImporter::VisitUnresolvedUsingValueDecl(
- UnresolvedUsingValueDecl *D) {
- DeclContext *DC, *LexicalDC;
- DeclarationName Name;
- SourceLocation Loc;
- NamedDecl *ToD = nullptr;
- if (ImportDeclParts(D, DC, LexicalDC, Name, ToD, Loc))
- return nullptr;
- if (ToD)
- return ToD;
-
- DeclarationNameInfo NameInfo(Name, Importer.Import(D->getNameInfo().getLoc()));
- ImportDeclarationNameLoc(D->getNameInfo(), NameInfo);
-
- UnresolvedUsingValueDecl *ToUsingValue = UnresolvedUsingValueDecl::Create(
- Importer.getToContext(), DC, Importer.Import(D->getUsingLoc()),
- Importer.Import(D->getQualifierLoc()), NameInfo,
- Importer.Import(D->getEllipsisLoc()));
-
- Importer.Imported(D, ToUsingValue);
- ToUsingValue->setAccess(D->getAccess());
- ToUsingValue->setLexicalDeclContext(LexicalDC);
- LexicalDC->addDeclInternal(ToUsingValue);
-
- return ToUsingValue;
-}
-
-Decl *ASTNodeImporter::VisitUnresolvedUsingTypenameDecl(
- UnresolvedUsingTypenameDecl *D) {
- DeclContext *DC, *LexicalDC;
- DeclarationName Name;
- SourceLocation Loc;
- NamedDecl *ToD = nullptr;
- if (ImportDeclParts(D, DC, LexicalDC, Name, ToD, Loc))
- return nullptr;
- if (ToD)
- return ToD;
-
- UnresolvedUsingTypenameDecl *ToUsing = UnresolvedUsingTypenameDecl::Create(
- Importer.getToContext(), DC, Importer.Import(D->getUsingLoc()),
- Importer.Import(D->getTypenameLoc()),
- Importer.Import(D->getQualifierLoc()), Loc, Name,
- Importer.Import(D->getEllipsisLoc()));
-
- Importer.Imported(D, ToUsing);
- ToUsing->setAccess(D->getAccess());
- ToUsing->setLexicalDeclContext(LexicalDC);
- LexicalDC->addDeclInternal(ToUsing);
-
- return ToUsing;
-}
-
-
bool ASTNodeImporter::ImportDefinition(ObjCInterfaceDecl *From,
ObjCInterfaceDecl *To,
ImportDefinitionKind Kind) {
@@ -3815,6 +3537,7 @@ Decl *ASTNodeImporter::VisitClassTemplat
CXXRecordDecl *DTemplated = D->getTemplatedDecl();
// Create the declaration that is being templated.
+ // Create the declaration that is being templated.
CXXRecordDecl *D2Templated = cast_or_null<CXXRecordDecl>(
Importer.Import(DTemplated));
if (!D2Templated)
@@ -3921,10 +3644,11 @@ Decl *ASTNodeImporter::VisitClassTemplat
TemplateArgumentListInfo ToTAInfo;
auto &ASTTemplateArgs = *PartialSpec->getTemplateArgsAsWritten();
for (unsigned I = 0, E = ASTTemplateArgs.NumTemplateArgs; I < E; ++I) {
- if (auto ToLoc = ImportTemplateArgumentLoc(ASTTemplateArgs[I]))
- ToTAInfo.addArgument(*ToLoc);
- else
+ bool Error = false;
+ auto ToLoc = ImportTemplateArgumentLoc(ASTTemplateArgs[I], Error);
+ if (Error)
return nullptr;
+ ToTAInfo.addArgument(ToLoc);
}
QualType CanonInjType = Importer.Import(
@@ -4807,10 +4531,11 @@ Expr *ASTNodeImporter::VisitDeclRefExpr(
TemplateArgumentListInfo *ResInfo = nullptr;
if (E->hasExplicitTemplateArgs()) {
for (const auto &FromLoc : E->template_arguments()) {
- if (auto ToTALoc = ImportTemplateArgumentLoc(FromLoc))
- ToTAInfo.addArgument(*ToTALoc);
- else
+ bool Error = false;
+ TemplateArgumentLoc ToTALoc = ImportTemplateArgumentLoc(FromLoc, Error);
+ if (Error)
return nullptr;
+ ToTAInfo.addArgument(ToTALoc);
}
ResInfo = &ToTAInfo;
}
Removed: cfe/trunk/test/Analysis/cfg-indirect-goto-determinism.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/cfg-indirect-goto-determinism.cpp?rev=318752&view=auto
==============================================================================
--- cfe/trunk/test/Analysis/cfg-indirect-goto-determinism.cpp (original)
+++ cfe/trunk/test/Analysis/cfg-indirect-goto-determinism.cpp (removed)
@@ -1,96 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s
-
-void *target;
-int indirectBlockSuccessorDeterminism() {
- (void)&&L1;
- (void)&&L2;
- (void)&&L3;
- (void)&&L4;
- (void)&&L5;
- (void)&&L6;
- (void)&&L7;
- (void)&&L8;
- (void)&&L9;
- (void)&&L10;
- (void)&&L11;
- (void)&&L12;
- (void)&&L13;
- (void)&&L14;
- (void)&&L15;
- (void)&&L16;
- (void)&&L17;
- (void)&&L18;
- (void)&&L19;
- (void)&&L20;
- (void)&&L21;
- (void)&&L22;
- (void)&&L23;
- (void)&&L24;
- (void)&&L25;
- (void)&&L26;
- (void)&&L27;
- (void)&&L28;
- (void)&&L29;
- (void)&&L30;
- (void)&&L31;
- (void)&&L32;
- (void)&&L33;
- (void)&&L34;
- (void)&&L35;
- (void)&&L36;
- (void)&&L37;
- (void)&&L38;
- (void)&&L39;
- (void)&&L40;
-
- goto *target;
- L1:
- L2:
- L3:
- L4:
- L5:
- L6:
- L7:
- L8:
- L9:
- L10:
- L11:
- L12:
- L13:
- L14:
- L15:
- L16:
- L17:
- L18:
- L19:
- L20:
- L21:
- L22:
- L23:
- L24:
- L25:
- L26:
- L27:
- L28:
- L29:
- L30:
- L31:
- L32:
- L33:
- L34:
- L35:
- L36:
- L37:
- L38:
- L39:
- L40:
- return 0;
-}
-
-// CHECK-LABEL: [B41 (INDIRECT GOTO DISPATCH)]
-// CHECK-NEXT: Preds (1): B42
-// CHECK-NEXT: Succs (40): B1 B2 B3 B4 B5 B6 B7 B8
-// CHECK-NEXT: B9 B10 B11 B12 B13 B14 B15 B16 B17 B18
-// CHECK-NEXT: B19 B20 B21 B22 B23 B24 B25 B26 B27 B28
-// CHECK-NEXT: B29 B30 B31 B32 B33 B34 B35 B36 B37 B38
-// CHECK-NEXT: B39 B40
More information about the cfe-commits
mailing list