diff options
author | Vlad Tsyrklevich <vtsyrklevich@google.com> | 2019-10-28 14:36:31 -0700 |
---|---|---|
committer | Vlad Tsyrklevich <vtsyrklevich@google.com> | 2019-10-28 15:00:40 -0700 |
commit | 38839d08b8e165dfaab0fa6acc77e620d6df294c (patch) | |
tree | 34a8a30dc6a8068683a06c767bb49849bad51fbd /clang/lib/Serialization | |
parent | 6b7615ae9a2296f7190b126d7573bfa3310d8afc (diff) | |
download | bcm5719-llvm-38839d08b8e165dfaab0fa6acc77e620d6df294c.tar.gz bcm5719-llvm-38839d08b8e165dfaab0fa6acc77e620d6df294c.zip |
Revert "[Concepts] Constraint Enforcement & Diagnostics"
This reverts commit ffa214ef22892d75340dc6720271863901dc2c90, it was
causing ASAN test failures on sanitizer-x86_64-linux-bootstrap.
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 24 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 20 |
2 files changed, 3 insertions, 41 deletions
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index f5d659affac..a275e0c3057 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -12,7 +12,6 @@ //===----------------------------------------------------------------------===// #include "clang/Serialization/ASTReader.h" -#include "clang/AST/ASTConcept.h" #include "clang/AST/ASTContext.h" #include "clang/AST/AttrIterator.h" #include "clang/AST/Decl.h" @@ -743,33 +742,14 @@ void ASTStmtReader::VisitConceptSpecializationExpr( E->TemplateKWLoc = Record.readSourceLocation(); E->ConceptNameLoc = Record.readSourceLocation(); E->FoundDecl = ReadDeclAs<NamedDecl>(); - E->NamedConcept = ReadDeclAs<ConceptDecl>(); + E->NamedConcept.setPointer(ReadDeclAs<ConceptDecl>()); const ASTTemplateArgumentListInfo *ArgsAsWritten = Record.readASTTemplateArgumentListInfo(); llvm::SmallVector<TemplateArgument, 4> Args; for (unsigned I = 0; I < NumTemplateArgs; ++I) Args.push_back(Record.readTemplateArgument()); E->setTemplateArguments(ArgsAsWritten, Args); - ConstraintSatisfaction Satisfaction; - Satisfaction.IsSatisfied = Record.readInt(); - if (!Satisfaction.IsSatisfied) { - unsigned NumDetailRecords = Record.readInt(); - for (unsigned i = 0; i != NumDetailRecords; ++i) { - Expr *ConstraintExpr = Record.readExpr(); - bool IsDiagnostic = Record.readInt(); - if (IsDiagnostic) { - SourceLocation DiagLocation = Record.readSourceLocation(); - std::string DiagMessage = Record.readString(); - Satisfaction.Details.emplace_back( - ConstraintExpr, new (Record.getContext()) - ConstraintSatisfaction::SubstitutionDiagnostic{ - DiagLocation, DiagMessage}); - } else - Satisfaction.Details.emplace_back(ConstraintExpr, Record.readExpr()); - } - } - E->Satisfaction = ASTConstraintSatisfaction::Create(Record.getContext(), - Satisfaction); + E->NamedConcept.setInt(Record.readInt() == 1); } void ASTStmtReader::VisitArraySubscriptExpr(ArraySubscriptExpr *E) { diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index 671e55e1452..c39d4d39bcd 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -401,25 +401,7 @@ void ASTStmtWriter::VisitConceptSpecializationExpr( Record.AddASTTemplateArgumentListInfo(E->getTemplateArgsAsWritten()); for (const TemplateArgument &Arg : TemplateArgs) Record.AddTemplateArgument(Arg); - const ASTConstraintSatisfaction &Satisfaction = E->getSatisfaction(); - Record.push_back(Satisfaction.IsSatisfied); - if (!Satisfaction.IsSatisfied) { - Record.push_back(Satisfaction.NumRecords); - for (const auto &DetailRecord : Satisfaction) { - Record.AddStmt(const_cast<Expr *>(DetailRecord.first)); - auto *E = DetailRecord.second.dyn_cast<Expr *>(); - Record.push_back(E == nullptr); - if (E) - Record.AddStmt(E); - else { - auto *Diag = DetailRecord.second.get<std::pair<SourceLocation, - StringRef> *>(); - Record.AddSourceLocation(Diag->first); - Record.AddString(Diag->second); - } - } - } - + Record.push_back(E->isSatisfied()); Code = serialization::EXPR_CONCEPT_SPECIALIZATION; } |