diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
commit | cfca06d7963fa0909f90483b42a6d7d194d01e08 (patch) | |
tree | 209fb2a2d68f8f277793fc8df46c753d31bc853b /llvm/lib/Remarks | |
parent | 706b4fc47bbc608932d3b491ae19a3b9cde9497b (diff) |
Notes
Diffstat (limited to 'llvm/lib/Remarks')
-rw-r--r-- | llvm/lib/Remarks/BitstreamRemarkParser.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Remarks/Remark.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Remarks/RemarkLinker.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Remarks/RemarkStreamer.cpp | 72 | ||||
-rw-r--r-- | llvm/lib/Remarks/RemarkStringTable.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/Remarks/YAMLRemarkParser.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/Remarks/YAMLRemarkParser.h | 2 |
7 files changed, 78 insertions, 8 deletions
diff --git a/llvm/lib/Remarks/BitstreamRemarkParser.cpp b/llvm/lib/Remarks/BitstreamRemarkParser.cpp index 4c45088791147..25fbea7d31c24 100644 --- a/llvm/lib/Remarks/BitstreamRemarkParser.cpp +++ b/llvm/lib/Remarks/BitstreamRemarkParser.cpp @@ -323,7 +323,7 @@ remarks::createBitstreamParserFromMeta( : std::make_unique<BitstreamRemarkParser>(Buf); if (ExternalFilePrependPath) - Parser->ExternalFilePrependPath = *ExternalFilePrependPath; + Parser->ExternalFilePrependPath = std::string(*ExternalFilePrependPath); return std::move(Parser); } diff --git a/llvm/lib/Remarks/Remark.cpp b/llvm/lib/Remarks/Remark.cpp index 401ac514b0117..057d1a378599f 100644 --- a/llvm/lib/Remarks/Remark.cpp +++ b/llvm/lib/Remarks/Remark.cpp @@ -11,8 +11,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Remarks/Remark.h" -#include "llvm-c/Remarks.h" -#include "llvm/Support/CBindingWrapping.h" +#include "llvm/ADT/ArrayRef.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; diff --git a/llvm/lib/Remarks/RemarkLinker.cpp b/llvm/lib/Remarks/RemarkLinker.cpp index 617ce770af666..dd1bba3d1762b 100644 --- a/llvm/lib/Remarks/RemarkLinker.cpp +++ b/llvm/lib/Remarks/RemarkLinker.cpp @@ -57,7 +57,7 @@ Remark &RemarkLinker::keep(std::unique_ptr<Remark> Remark) { } void RemarkLinker::setExternalFilePrependPath(StringRef PrependPathIn) { - PrependPath = PrependPathIn; + PrependPath = std::string(PrependPathIn); } // Discard remarks with no source location. diff --git a/llvm/lib/Remarks/RemarkStreamer.cpp b/llvm/lib/Remarks/RemarkStreamer.cpp new file mode 100644 index 0000000000000..2f00b8e736700 --- /dev/null +++ b/llvm/lib/Remarks/RemarkStreamer.cpp @@ -0,0 +1,72 @@ +//===- llvm/Remarks/RemarkStreamer.cpp - Remark Streamer -*- C++ --------*-===// +// +// 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 +// +//===----------------------------------------------------------------------===// +// +// This file contains the implementation of the main remark streamer. +// +//===----------------------------------------------------------------------===// + +#include "llvm/Remarks/RemarkStreamer.h" +#include "llvm/Support/CommandLine.h" + +using namespace llvm; +using namespace llvm::remarks; + +static cl::opt<cl::boolOrDefault> EnableRemarksSection( + "remarks-section", + cl::desc( + "Emit a section containing remark diagnostics metadata. By default, " + "this is enabled for the following formats: yaml-strtab, bitstream."), + cl::init(cl::BOU_UNSET), cl::Hidden); + +RemarkStreamer::RemarkStreamer( + std::unique_ptr<remarks::RemarkSerializer> RemarkSerializer, + Optional<StringRef> FilenameIn) + : PassFilter(), RemarkSerializer(std::move(RemarkSerializer)), + Filename(FilenameIn ? Optional<std::string>(FilenameIn->str()) : None) {} + +Error RemarkStreamer::setFilter(StringRef Filter) { + Regex R = Regex(Filter); + std::string RegexError; + if (!R.isValid(RegexError)) + return createStringError(std::make_error_code(std::errc::invalid_argument), + RegexError.data()); + PassFilter = std::move(R); + return Error::success(); +} + +bool RemarkStreamer::matchesFilter(StringRef Str) { + if (PassFilter) + return PassFilter->match(Str); + // No filter means all strings pass. + return true; +} + +bool RemarkStreamer::needsSection() const { + if (EnableRemarksSection == cl::BOU_TRUE) + return true; + + if (EnableRemarksSection == cl::BOU_FALSE) + return false; + + assert(EnableRemarksSection == cl::BOU_UNSET); + + // We only need a section if we're in separate mode. + if (RemarkSerializer->Mode != remarks::SerializerMode::Separate) + return false; + + // Only some formats need a section: + // * bitstream + // * yaml-strtab + switch (RemarkSerializer->SerializerFormat) { + case remarks::Format::YAMLStrTab: + case remarks::Format::Bitstream: + return true; + default: + return false; + } +} diff --git a/llvm/lib/Remarks/RemarkStringTable.cpp b/llvm/lib/Remarks/RemarkStringTable.cpp index 51156465be513..5f462f01bb9a6 100644 --- a/llvm/lib/Remarks/RemarkStringTable.cpp +++ b/llvm/lib/Remarks/RemarkStringTable.cpp @@ -11,10 +11,10 @@ //===----------------------------------------------------------------------===// #include "llvm/Remarks/RemarkStringTable.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Remarks/Remark.h" #include "llvm/Remarks/RemarkParser.h" -#include "llvm/Support/EndianStream.h" -#include "llvm/Support/Error.h" +#include "llvm/Support/raw_ostream.h" #include <vector> using namespace llvm; diff --git a/llvm/lib/Remarks/YAMLRemarkParser.cpp b/llvm/lib/Remarks/YAMLRemarkParser.cpp index dd834d85676e7..3d9996c931aeb 100644 --- a/llvm/lib/Remarks/YAMLRemarkParser.cpp +++ b/llvm/lib/Remarks/YAMLRemarkParser.cpp @@ -13,7 +13,6 @@ #include "YAMLRemarkParser.h" #include "llvm/ADT/StringSwitch.h" -#include "llvm/Remarks/RemarkParser.h" #include "llvm/Support/Endian.h" #include "llvm/Support/Path.h" diff --git a/llvm/lib/Remarks/YAMLRemarkParser.h b/llvm/lib/Remarks/YAMLRemarkParser.h index 03707433bc03a..df3b908f4779f 100644 --- a/llvm/lib/Remarks/YAMLRemarkParser.h +++ b/llvm/lib/Remarks/YAMLRemarkParser.h @@ -35,7 +35,7 @@ public: YAMLParseError(StringRef Message, SourceMgr &SM, yaml::Stream &Stream, yaml::Node &Node); - YAMLParseError(StringRef Message) : Message(Message) {} + YAMLParseError(StringRef Message) : Message(std::string(Message)) {} void log(raw_ostream &OS) const override { OS << Message; } std::error_code convertToErrorCode() const override { |