aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/clang14/lib/Frontend/TestModuleFileExtension.cpp
diff options
context:
space:
mode:
authorrobot-ydb-importer <robot-ydb-importer@yandex-team.com>2024-03-19 18:52:14 +0300
committerrobot-ydb-importer <robot-ydb-importer@yandex-team.com>2024-03-19 19:24:53 +0300
commitd314d6ddf6131c2ee96e97067fb3e5f560395dfb (patch)
tree167d2449ac47df359988840007e19e8cd152a09c /contrib/libs/clang14/lib/Frontend/TestModuleFileExtension.cpp
parentac62876a4c7633d486f2ecb111720a426a7da258 (diff)
downloadydb-d314d6ddf6131c2ee96e97067fb3e5f560395dfb.tar.gz
YDB Import 588
1384556be6811c00a4098d426b8eda9be6d2a541
Diffstat (limited to 'contrib/libs/clang14/lib/Frontend/TestModuleFileExtension.cpp')
-rw-r--r--contrib/libs/clang14/lib/Frontend/TestModuleFileExtension.cpp137
1 files changed, 0 insertions, 137 deletions
diff --git a/contrib/libs/clang14/lib/Frontend/TestModuleFileExtension.cpp b/contrib/libs/clang14/lib/Frontend/TestModuleFileExtension.cpp
deleted file mode 100644
index 2d5145d0c54..00000000000
--- a/contrib/libs/clang14/lib/Frontend/TestModuleFileExtension.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-//===-- TestModuleFileExtension.cpp - Module Extension Tester -------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-#include "TestModuleFileExtension.h"
-#include "clang/Frontend/FrontendDiagnostic.h"
-#include "clang/Serialization/ASTReader.h"
-#include "llvm/ADT/Hashing.h"
-#include "llvm/Bitstream/BitstreamWriter.h"
-#include "llvm/Support/raw_ostream.h"
-#include <cstdio>
-using namespace clang;
-using namespace clang::serialization;
-
-char TestModuleFileExtension::ID = 0;
-
-TestModuleFileExtension::Writer::~Writer() { }
-
-void TestModuleFileExtension::Writer::writeExtensionContents(
- Sema &SemaRef,
- llvm::BitstreamWriter &Stream) {
- using namespace llvm;
-
- // Write an abbreviation for this record.
- auto Abv = std::make_shared<llvm::BitCodeAbbrev>();
- Abv->Add(BitCodeAbbrevOp(FIRST_EXTENSION_RECORD_ID));
- Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // # of characters
- Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // message
- auto Abbrev = Stream.EmitAbbrev(std::move(Abv));
-
- // Write a message into the extension block.
- SmallString<64> Message;
- {
- auto Ext = static_cast<TestModuleFileExtension *>(getExtension());
- raw_svector_ostream OS(Message);
- OS << "Hello from " << Ext->BlockName << " v" << Ext->MajorVersion << "."
- << Ext->MinorVersion;
- }
- uint64_t Record[] = {FIRST_EXTENSION_RECORD_ID, Message.size()};
- Stream.EmitRecordWithBlob(Abbrev, Record, Message);
-}
-
-TestModuleFileExtension::Reader::Reader(ModuleFileExtension *Ext,
- const llvm::BitstreamCursor &InStream)
- : ModuleFileExtensionReader(Ext), Stream(InStream)
-{
- // Read the extension block.
- SmallVector<uint64_t, 4> Record;
- while (true) {
- llvm::Expected<llvm::BitstreamEntry> MaybeEntry =
- Stream.advanceSkippingSubblocks();
- if (!MaybeEntry)
- (void)MaybeEntry.takeError();
- llvm::BitstreamEntry Entry = MaybeEntry.get();
-
- switch (Entry.Kind) {
- case llvm::BitstreamEntry::SubBlock:
- case llvm::BitstreamEntry::EndBlock:
- case llvm::BitstreamEntry::Error:
- return;
-
- case llvm::BitstreamEntry::Record:
- break;
- }
-
- Record.clear();
- StringRef Blob;
- Expected<unsigned> MaybeRecCode =
- Stream.readRecord(Entry.ID, Record, &Blob);
- if (!MaybeRecCode)
- fprintf(stderr, "Failed reading rec code: %s\n",
- toString(MaybeRecCode.takeError()).c_str());
- switch (MaybeRecCode.get()) {
- case FIRST_EXTENSION_RECORD_ID: {
- StringRef Message = Blob.substr(0, Record[0]);
- fprintf(stderr, "Read extension block message: %s\n",
- Message.str().c_str());
- break;
- }
- }
- }
-}
-
-TestModuleFileExtension::Reader::~Reader() { }
-
-TestModuleFileExtension::~TestModuleFileExtension() { }
-
-ModuleFileExtensionMetadata
-TestModuleFileExtension::getExtensionMetadata() const {
- return { BlockName, MajorVersion, MinorVersion, UserInfo };
-}
-
-void TestModuleFileExtension::hashExtension(
- ExtensionHashBuilder &HBuilder) const {
- if (Hashed) {
- HBuilder.add(BlockName);
- HBuilder.add(MajorVersion);
- HBuilder.add(MinorVersion);
- HBuilder.add(UserInfo);
- }
-}
-
-std::unique_ptr<ModuleFileExtensionWriter>
-TestModuleFileExtension::createExtensionWriter(ASTWriter &) {
- return std::unique_ptr<ModuleFileExtensionWriter>(new Writer(this));
-}
-
-std::unique_ptr<ModuleFileExtensionReader>
-TestModuleFileExtension::createExtensionReader(
- const ModuleFileExtensionMetadata &Metadata,
- ASTReader &Reader, serialization::ModuleFile &Mod,
- const llvm::BitstreamCursor &Stream)
-{
- assert(Metadata.BlockName == BlockName && "Wrong block name");
- if (std::make_pair(Metadata.MajorVersion, Metadata.MinorVersion) !=
- std::make_pair(MajorVersion, MinorVersion)) {
- Reader.getDiags().Report(Mod.ImportLoc,
- diag::err_test_module_file_extension_version)
- << BlockName << Metadata.MajorVersion << Metadata.MinorVersion
- << MajorVersion << MinorVersion;
- return nullptr;
- }
-
- return std::unique_ptr<ModuleFileExtensionReader>(
- new TestModuleFileExtension::Reader(this, Stream));
-}
-
-std::string TestModuleFileExtension::str() const {
- std::string Buffer;
- llvm::raw_string_ostream OS(Buffer);
- OS << BlockName << ":" << MajorVersion << ":" << MinorVersion << ":" << Hashed
- << ":" << UserInfo;
- return Buffer;
-}