[llvm] r355511 - Revert "[Remarks] Refactor remark diagnostic emission in a RemarkStreamer"
Francis Visoiu Mistrih via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 6 06:52:37 PST 2019
Author: thegameg
Date: Wed Mar 6 06:52:37 2019
New Revision: 355511
URL: http://llvm.org/viewvc/llvm-project?rev=355511&view=rev
Log:
Revert "[Remarks] Refactor remark diagnostic emission in a RemarkStreamer"
This reverts commit 2e8c4997a2089f8228c843fd81b148d903472e02.
Breaks bots.
Removed:
llvm/trunk/include/llvm/IR/RemarkStreamer.h
llvm/trunk/lib/IR/RemarkStreamer.cpp
Modified:
llvm/trunk/include/llvm/Analysis/OptimizationRemarkEmitter.h
llvm/trunk/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h
llvm/trunk/include/llvm/IR/LLVMContext.h
llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/trunk/lib/IR/CMakeLists.txt
llvm/trunk/lib/IR/DiagnosticInfo.cpp
llvm/trunk/lib/IR/LLVMContext.cpp
llvm/trunk/lib/IR/LLVMContextImpl.h
llvm/trunk/lib/LTO/LTO.cpp
llvm/trunk/tools/llc/llc.cpp
llvm/trunk/tools/opt/opt.cpp
Modified: llvm/trunk/include/llvm/Analysis/OptimizationRemarkEmitter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/OptimizationRemarkEmitter.h?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/OptimizationRemarkEmitter.h (original)
+++ llvm/trunk/include/llvm/Analysis/OptimizationRemarkEmitter.h Wed Mar 6 06:52:37 2019
@@ -77,7 +77,7 @@ public:
// remarks enabled. We can't currently check whether remarks are requested
// for the calling pass since that requires actually building the remark.
- if (F->getContext().getRemarkStreamer() ||
+ if (F->getContext().getDiagnosticsOutputFile() ||
F->getContext().getDiagHandlerPtr()->isAnyRemarkEnabled()) {
auto R = RemarkBuilder();
emit((DiagnosticInfoOptimizationBase &)R);
@@ -92,7 +92,7 @@ public:
/// provide more context so that non-trivial false positives can be quickly
/// detected by the user.
bool allowExtraAnalysis(StringRef PassName) const {
- return (F->getContext().getRemarkStreamer() ||
+ return (F->getContext().getDiagnosticsOutputFile() ||
F->getContext().getDiagHandlerPtr()->isAnyRemarkEnabled(PassName));
}
Modified: llvm/trunk/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h (original)
+++ llvm/trunk/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h Wed Mar 6 06:52:37 2019
@@ -158,10 +158,9 @@ public:
/// (1) to filter trivial false positives or (2) to provide more context so
/// that non-trivial false positives can be quickly detected by the user.
bool allowExtraAnalysis(StringRef PassName) const {
- return (
- MF.getFunction().getContext().getRemarkStreamer() ||
- MF.getFunction().getContext().getDiagHandlerPtr()->isAnyRemarkEnabled(
- PassName));
+ return (MF.getFunction().getContext().getDiagnosticsOutputFile() ||
+ MF.getFunction().getContext()
+ .getDiagHandlerPtr()->isAnyRemarkEnabled(PassName));
}
/// Take a lambda that returns a remark which will be emitted. Second
@@ -172,11 +171,8 @@ public:
// remarks enabled. We can't currently check whether remarks are requested
// for the calling pass since that requires actually building the remark.
- if (MF.getFunction().getContext().getRemarkStreamer() ||
- MF.getFunction()
- .getContext()
- .getDiagHandlerPtr()
- ->isAnyRemarkEnabled()) {
+ if (MF.getFunction().getContext().getDiagnosticsOutputFile() ||
+ MF.getFunction().getContext().getDiagHandlerPtr()->isAnyRemarkEnabled()) {
auto R = RemarkBuilder();
emit((DiagnosticInfoOptimizationBase &)R);
}
Modified: llvm/trunk/include/llvm/IR/LLVMContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/LLVMContext.h?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/LLVMContext.h (original)
+++ llvm/trunk/include/llvm/IR/LLVMContext.h Wed Mar 6 06:52:37 2019
@@ -35,8 +35,12 @@ template <typename T> class SmallVectorI
class SMDiagnostic;
class StringRef;
class Twine;
-class RemarkStreamer;
-class raw_ostream;
+
+namespace yaml {
+
+class Output;
+
+} // end namespace yaml
namespace SyncScope {
@@ -242,23 +246,16 @@ public:
/// included in optimization diagnostics.
void setDiagnosticsHotnessThreshold(uint64_t Threshold);
- /// Return the streamer used by the backend to save remark diagnostics. If it
- /// does not exist, diagnostics are not saved in a file but only emitted via
- /// the diagnostic handler.
- RemarkStreamer *getRemarkStreamer();
- const RemarkStreamer *getRemarkStreamer() const;
-
- /// Set the diagnostics output used for optimization diagnostics.
- /// This filename may be embedded in a section for tools to find the
- /// diagnostics whenever they're needed.
- ///
- /// If a remark streamer is already set, it will be replaced with
- /// \p RemarkStreamer.
+ /// Return the YAML file used by the backend to save optimization
+ /// diagnostics. If null, diagnostics are not saved in a file but only
+ /// emitted via the diagnostic handler.
+ yaml::Output *getDiagnosticsOutputFile();
+ /// Set the diagnostics output file used for optimization diagnostics.
///
- /// By default, diagnostics are not saved in a file but only emitted via the
- /// diagnostic handler. Even if an output file is set, the handler is invoked
- /// for each diagnostic message.
- void setRemarkStreamer(std::unique_ptr<RemarkStreamer> RemarkStreamer);
+ /// By default or if invoked with null, diagnostics are not saved in a file
+ /// but only emitted via the diagnostic handler. Even if an output file is
+ /// set, the handler is invoked for each diagnostic message.
+ void setDiagnosticsOutputFile(std::unique_ptr<yaml::Output> F);
/// Get the prefix that should be printed in front of a diagnostic of
/// the given \p Severity
Removed: llvm/trunk/include/llvm/IR/RemarkStreamer.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/RemarkStreamer.h?rev=355510&view=auto
==============================================================================
--- llvm/trunk/include/llvm/IR/RemarkStreamer.h (original)
+++ llvm/trunk/include/llvm/IR/RemarkStreamer.h (removed)
@@ -1,44 +0,0 @@
-//===- llvm/IR/RemarkStreamer.h - 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 declares the main interface for outputting remarks.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_IR_REMARKSTREAMER_H
-#define LLVM_IR_REMARKSTREAMER_H
-
-#include "llvm/IR/DiagnosticInfo.h"
-#include "llvm/Support/YAMLTraits.h"
-#include "llvm/Support/raw_ostream.h"
-#include <string>
-#include <vector>
-
-namespace llvm {
-/// Streamer for remarks.
-class RemarkStreamer {
- /// The filename that the remark diagnostics are emitted to.
- const std::string Filename;
- /// The open raw_ostream that the remark diagnostics are emitted to.
- raw_ostream &OS;
-
- /// The YAML streamer.
- yaml::Output YAMLOutput;
-
-public:
- RemarkStreamer(StringRef Filename, raw_ostream& OS);
- /// Return the filename that the remark diagnostics are emitted to.
- StringRef getFilename() const { return Filename; }
- /// Return stream that the remark diagnostics are emitted to.
- raw_ostream &getStream() { return OS; }
- /// Emit a diagnostic through the streamer.
- void emit(const DiagnosticInfoOptimizationBase &Diag);
-};
-} // end namespace llvm
-
-#endif // LLVM_IR_REMARKSTREAMER_H
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Wed Mar 6 06:52:37 2019
@@ -78,7 +78,6 @@
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
-#include "llvm/IR/RemarkStreamer.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/MC/MCAsmInfo.h"
Modified: llvm/trunk/lib/IR/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/CMakeLists.txt?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/lib/IR/CMakeLists.txt (original)
+++ llvm/trunk/lib/IR/CMakeLists.txt Wed Mar 6 06:52:37 2019
@@ -46,7 +46,6 @@ add_llvm_library(LLVMCore
PassManager.cpp
PassRegistry.cpp
PassTimingInfo.cpp
- RemarkStreamer.cpp
SafepointIRVerifier.cpp
ProfileSummary.cpp
Statepoint.cpp
Modified: llvm/trunk/lib/IR/DiagnosticInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DiagnosticInfo.cpp?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/lib/IR/DiagnosticInfo.cpp (original)
+++ llvm/trunk/lib/IR/DiagnosticInfo.cpp Wed Mar 6 06:52:37 2019
@@ -27,7 +27,6 @@
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
-#include "llvm/IR/RemarkStreamer.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
Modified: llvm/trunk/lib/IR/LLVMContext.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LLVMContext.cpp?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/lib/IR/LLVMContext.cpp (original)
+++ llvm/trunk/lib/IR/LLVMContext.cpp Wed Mar 6 06:52:37 2019
@@ -21,7 +21,6 @@
#include "llvm/IR/DiagnosticPrinter.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
-#include "llvm/IR/RemarkStreamer.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
@@ -161,15 +160,12 @@ uint64_t LLVMContext::getDiagnosticsHotn
return pImpl->DiagnosticsHotnessThreshold;
}
-RemarkStreamer *LLVMContext::getRemarkStreamer() {
- return pImpl->RemarkStreamer.get();
+yaml::Output *LLVMContext::getDiagnosticsOutputFile() {
+ return pImpl->DiagnosticsOutputFile.get();
}
-const RemarkStreamer *LLVMContext::getRemarkStreamer() const {
- return const_cast<LLVMContext *>(this)->getRemarkStreamer();
-}
-void LLVMContext::setRemarkStreamer(
- std::unique_ptr<RemarkStreamer> RemarkStreamer) {
- pImpl->RemarkStreamer = std::move(RemarkStreamer);
+
+void LLVMContext::setDiagnosticsOutputFile(std::unique_ptr<yaml::Output> F) {
+ pImpl->DiagnosticsOutputFile = std::move(F);
}
DiagnosticHandler::DiagnosticHandlerTy
@@ -232,10 +228,14 @@ LLVMContext::getDiagnosticMessagePrefix(
}
void LLVMContext::diagnose(const DiagnosticInfo &DI) {
- if (auto *OptDiagBase = dyn_cast<DiagnosticInfoOptimizationBase>(&DI))
- if (RemarkStreamer *RS = getRemarkStreamer())
- RS->emit(*OptDiagBase);
-
+ if (auto *OptDiagBase = dyn_cast<DiagnosticInfoOptimizationBase>(&DI)) {
+ yaml::Output *Out = getDiagnosticsOutputFile();
+ if (Out) {
+ // For remarks the << operator takes a reference to a pointer.
+ auto *P = const_cast<DiagnosticInfoOptimizationBase *>(OptDiagBase);
+ *Out << P;
+ }
+ }
// If there is a report handler, use it.
if (pImpl->DiagHandler &&
(!pImpl->RespectDiagnosticFilters || isDiagnosticEnabled(DI)) &&
Modified: llvm/trunk/lib/IR/LLVMContextImpl.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LLVMContextImpl.h?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/lib/IR/LLVMContextImpl.h (original)
+++ llvm/trunk/lib/IR/LLVMContextImpl.h Wed Mar 6 06:52:37 2019
@@ -37,7 +37,6 @@
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Metadata.h"
-#include "llvm/IR/RemarkStreamer.h"
#include "llvm/IR/TrackingMDRef.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Casting.h"
@@ -1227,7 +1226,7 @@ public:
bool RespectDiagnosticFilters = false;
bool DiagnosticsHotnessRequested = false;
uint64_t DiagnosticsHotnessThreshold = 0;
- std::unique_ptr<RemarkStreamer> RemarkStreamer;
+ std::unique_ptr<yaml::Output> DiagnosticsOutputFile;
LLVMContext::YieldCallbackTy YieldCallback = nullptr;
void *YieldOpaqueHandle = nullptr;
Removed: llvm/trunk/lib/IR/RemarkStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/RemarkStreamer.cpp?rev=355510&view=auto
==============================================================================
--- llvm/trunk/lib/IR/RemarkStreamer.cpp (original)
+++ llvm/trunk/lib/IR/RemarkStreamer.cpp (removed)
@@ -1,28 +0,0 @@
-//===- llvm/IR/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 remark outputting as part of
-// LLVMContext.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/RemarkStreamer.h"
-
-using namespace llvm;
-
-RemarkStreamer::RemarkStreamer(StringRef Filename, raw_ostream &OS)
- : Filename(Filename), OS(OS),
- YAMLOutput(OS, reinterpret_cast<void *>(this)) {
- assert(!Filename.empty() && "This needs to be a real filename.");
-}
-
-void RemarkStreamer::emit(const DiagnosticInfoOptimizationBase &Diag) {
- DiagnosticInfoOptimizationBase *DiagPtr =
- const_cast<DiagnosticInfoOptimizationBase *>(&Diag);
- YAMLOutput << DiagPtr;
-}
Modified: llvm/trunk/lib/LTO/LTO.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTO.cpp?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTO.cpp (original)
+++ llvm/trunk/lib/LTO/LTO.cpp Wed Mar 6 06:52:37 2019
@@ -24,7 +24,6 @@
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Mangler.h"
#include "llvm/IR/Metadata.h"
-#include "llvm/IR/RemarkStreamer.h"
#include "llvm/LTO/LTOBackend.h"
#include "llvm/LTO/SummaryBasedOptimizations.h"
#include "llvm/Linker/IRMover.h"
@@ -1327,8 +1326,8 @@ lto::setupOptimizationRemarks(LLVMContex
llvm::make_unique<ToolOutputFile>(Filename, EC, sys::fs::F_None);
if (EC)
return errorCodeToError(EC);
- Context.setRemarkStreamer(
- llvm::make_unique<RemarkStreamer>(Filename, DiagnosticFile->os()));
+ Context.setDiagnosticsOutputFile(
+ llvm::make_unique<yaml::Output>(DiagnosticFile->os()));
DiagnosticFile->keep();
return std::move(DiagnosticFile);
}
Modified: llvm/trunk/tools/llc/llc.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/tools/llc/llc.cpp (original)
+++ llvm/trunk/tools/llc/llc.cpp Wed Mar 6 06:52:37 2019
@@ -31,7 +31,6 @@
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Module.h"
-#include "llvm/IR/RemarkStreamer.h"
#include "llvm/IR/Verifier.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/MC/SubtargetFeature.h"
@@ -334,8 +333,8 @@ int main(int argc, char **argv) {
WithColor::error(errs(), argv[0]) << EC.message() << '\n';
return 1;
}
- Context.setRemarkStreamer(
- llvm::make_unique<RemarkStreamer>(RemarksFilename, YamlFile->os()));
+ Context.setDiagnosticsOutputFile(
+ llvm::make_unique<yaml::Output>(YamlFile->os()));
}
if (InputLanguage != "" && InputLanguage != "ir" &&
Modified: llvm/trunk/tools/opt/opt.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=355511&r1=355510&r2=355511&view=diff
==============================================================================
--- llvm/trunk/tools/opt/opt.cpp (original)
+++ llvm/trunk/tools/opt/opt.cpp Wed Mar 6 06:52:37 2019
@@ -33,7 +33,6 @@
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/LegacyPassNameParser.h"
#include "llvm/IR/Module.h"
-#include "llvm/IR/RemarkStreamer.h"
#include "llvm/IR/Verifier.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/InitializePasses.h"
@@ -564,8 +563,8 @@ int main(int argc, char **argv) {
errs() << EC.message() << '\n';
return 1;
}
- Context.setRemarkStreamer(llvm::make_unique<RemarkStreamer>(
- RemarksFilename, OptRemarkFile->os()));
+ Context.setDiagnosticsOutputFile(
+ llvm::make_unique<yaml::Output>(OptRemarkFile->os()));
}
// Load the input module...
More information about the llvm-commits
mailing list