diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-03-28 03:19:50 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-03-28 03:19:50 +0000 |
commit | 2041b46b7637414c3775edd762ea9b72ec54b45b (patch) | |
tree | b7ed0f35fc6a18c4859e6ebf6e7253a5c74c0158 /clang/lib/Serialization | |
parent | a51d6ea990e78e49722fb7ebc13d384014f5c691 (diff) | |
download | bcm5719-llvm-2041b46b7637414c3775edd762ea9b72ec54b45b.tar.gz bcm5719-llvm-2041b46b7637414c3775edd762ea9b72ec54b45b.zip |
Fix serialization/deserialization for __uuidof
I broke this back in r264529 because I forgot to serialize the UuidAttr
member. Fix this by replacing the UuidAttr with a StringRef which is
properly serialized and deserialized.
llvm-svn: 264562
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index c2256ebbc0f..f8fb2b86034 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -1680,6 +1680,8 @@ void ASTStmtReader::VisitMSPropertySubscriptExpr(MSPropertySubscriptExpr *E) { void ASTStmtReader::VisitCXXUuidofExpr(CXXUuidofExpr *E) { VisitExpr(E); E->setSourceRange(ReadSourceRange(Record, Idx)); + std::string UuidStr = ReadString(Record, Idx); + E->setUuidStr(StringRef(UuidStr).copy(Reader.getContext())); if (E->isTypeOperand()) { // __uuidof(ComType) E->setTypeOperandSourceInfo( GetTypeSourceInfo(Record, Idx)); diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index 38cd89254fc..3738c8e9a78 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -1701,6 +1701,7 @@ void ASTStmtWriter::VisitMSPropertySubscriptExpr(MSPropertySubscriptExpr *E) { void ASTStmtWriter::VisitCXXUuidofExpr(CXXUuidofExpr *E) { VisitExpr(E); Writer.AddSourceRange(E->getSourceRange(), Record); + Writer.AddString(E->getUuidStr(), Record); if (E->isTypeOperand()) { Writer.AddTypeSourceInfo(E->getTypeOperandSourceInfo(), Record); Code = serialization::EXPR_CXX_UUIDOF_TYPE; |