summaryrefslogtreecommitdiff
path: root/lib/IR
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@google.com>2014-05-22 17:19:01 +0000
committerDiego Novillo <dnovillo@google.com>2014-05-22 17:19:01 +0000
commitc64771062bcf54f51887df75e8b06f80bfca9497 (patch)
treeab00bbbb77be88c0b48347527fe2ce27d04ab141 /lib/IR
parent3957d4245ffd0ce8c9e610b7fbc8430e910ddf84 (diff)
downloadllvm-c64771062bcf54f51887df75e8b06f80bfca9497.tar.gz
llvm-c64771062bcf54f51887df75e8b06f80bfca9497.tar.bz2
llvm-c64771062bcf54f51887df75e8b06f80bfca9497.tar.xz
Remove LLVMContextImpl::optimizationRemarkEnabledFor.
Summary: This patch moves the handling of -pass-remarks* over to lib/DiagnosticInfo.cpp. This allows the removal of the optimizationRemarkEnabledFor functions from LLVMContextImpl, as they're not needed anymore. Reviewers: qcolombet Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D3878 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209453 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/IR')
-rw-r--r--lib/IR/DiagnosticInfo.cpp77
-rw-r--r--lib/IR/LLVMContext.cpp6
-rw-r--r--lib/IR/LLVMContextImpl.cpp77
-rw-r--r--lib/IR/LLVMContextImpl.h9
4 files changed, 71 insertions, 98 deletions
diff --git a/lib/IR/DiagnosticInfo.cpp b/lib/IR/DiagnosticInfo.cpp
index 68a69183af..6eeb16220e 100644
--- a/lib/IR/DiagnosticInfo.cpp
+++ b/lib/IR/DiagnosticInfo.cpp
@@ -23,10 +23,69 @@
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/Atomic.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/Regex.h"
#include <string>
using namespace llvm;
+namespace {
+
+/// \brief Regular expression corresponding to the value given in one of the
+/// -pass-remarks* command line flags. Passes whose name matches this regexp
+/// will emit a diagnostic when calling the associated diagnostic function
+/// (emitOptimizationRemark, emitOptimizationRemarkMissed or
+/// emitOptimizationRemarkAnalysis).
+struct PassRemarksOpt {
+ std::shared_ptr<Regex> Pattern;
+
+ void operator=(const std::string &Val) {
+ // Create a regexp object to match pass names for emitOptimizationRemark.
+ if (!Val.empty()) {
+ Pattern = std::make_shared<Regex>(Val);
+ std::string RegexError;
+ if (!Pattern->isValid(RegexError))
+ report_fatal_error("Invalid regular expression '" + Val +
+ "' in -pass-remarks: " + RegexError,
+ false);
+ }
+ };
+};
+
+static PassRemarksOpt PassRemarksOptLoc;
+static PassRemarksOpt PassRemarksMissedOptLoc;
+static PassRemarksOpt PassRemarksAnalysisOptLoc;
+
+// -pass-remarks
+// Command line flag to enable emitOptimizationRemark()
+static cl::opt<PassRemarksOpt, true, cl::parser<std::string>>
+PassRemarks("pass-remarks", cl::value_desc("pattern"),
+ cl::desc("Enable optimization remarks from passes whose name match "
+ "the given regular expression"),
+ cl::Hidden, cl::location(PassRemarksOptLoc), cl::ValueRequired,
+ cl::ZeroOrMore);
+
+// -pass-remarks-missed
+// Command line flag to enable emitOptimizationRemarkMissed()
+static cl::opt<PassRemarksOpt, true, cl::parser<std::string>> PassRemarksMissed(
+ "pass-remarks-missed", cl::value_desc("pattern"),
+ cl::desc("Enable missed optimization remarks from passes whose name match "
+ "the given regular expression"),
+ cl::Hidden, cl::location(PassRemarksMissedOptLoc), cl::ValueRequired,
+ cl::ZeroOrMore);
+
+// -pass-remarks-analysis
+// Command line flag to enable emitOptimizationRemarkAnalysis()
+static cl::opt<PassRemarksOpt, true, cl::parser<std::string>>
+PassRemarksAnalysis(
+ "pass-remarks-analysis", cl::value_desc("pattern"),
+ cl::desc(
+ "Enable optimization analysis remarks from passes whose name match "
+ "the given regular expression"),
+ cl::Hidden, cl::location(PassRemarksAnalysisOptLoc), cl::ValueRequired,
+ cl::ZeroOrMore);
+}
+
int llvm::getNextAvailablePluginDiagnosticKind() {
static sys::cas_flag PluginKindID = DK_FirstPluginKind;
return (int)sys::AtomicIncrement(&PluginKindID);
@@ -94,19 +153,19 @@ void DiagnosticInfoOptimizationRemarkBase::print(DiagnosticPrinter &DP) const {
DP << getLocationStr() << ": " << getMsg();
}
-bool
-DiagnosticInfoOptimizationRemark::isEnabled(LLVMContextImpl *pImpl) const {
- return pImpl->optimizationRemarkEnabledFor(this);
+bool DiagnosticInfoOptimizationRemark::isEnabled() const {
+ return PassRemarksOptLoc.Pattern &&
+ PassRemarksOptLoc.Pattern->match(getPassName());
}
-bool DiagnosticInfoOptimizationRemarkMissed::isEnabled(
- LLVMContextImpl *pImpl) const {
- return pImpl->optimizationRemarkEnabledFor(this);
+bool DiagnosticInfoOptimizationRemarkMissed::isEnabled() const {
+ return PassRemarksMissedOptLoc.Pattern &&
+ PassRemarksMissedOptLoc.Pattern->match(getPassName());
}
-bool DiagnosticInfoOptimizationRemarkAnalysis::isEnabled(
- LLVMContextImpl *pImpl) const {
- return pImpl->optimizationRemarkEnabledFor(this);
+bool DiagnosticInfoOptimizationRemarkAnalysis::isEnabled() const {
+ return PassRemarksAnalysisOptLoc.Pattern &&
+ PassRemarksAnalysisOptLoc.Pattern->match(getPassName());
}
void llvm::emitOptimizationRemark(LLVMContext &Ctx, const char *PassName,
diff --git a/lib/IR/LLVMContext.cpp b/lib/IR/LLVMContext.cpp
index 7b75d42b85..de825f00b2 100644
--- a/lib/IR/LLVMContext.cpp
+++ b/lib/IR/LLVMContext.cpp
@@ -148,15 +148,15 @@ void LLVMContext::diagnose(const DiagnosticInfo &DI) {
// diagnostic and return.
switch (DI.getKind()) {
case llvm::DK_OptimizationRemark:
- if (!cast<DiagnosticInfoOptimizationRemark>(DI).isEnabled(pImpl))
+ if (!cast<DiagnosticInfoOptimizationRemark>(DI).isEnabled())
return;
break;
case llvm::DK_OptimizationRemarkMissed:
- if (!cast<DiagnosticInfoOptimizationRemarkMissed>(DI).isEnabled(pImpl))
+ if (!cast<DiagnosticInfoOptimizationRemarkMissed>(DI).isEnabled())
return;
break;
case llvm::DK_OptimizationRemarkAnalysis:
- if (!cast<DiagnosticInfoOptimizationRemarkAnalysis>(DI).isEnabled(pImpl))
+ if (!cast<DiagnosticInfoOptimizationRemarkAnalysis>(DI).isEnabled())
return;
break;
default:
diff --git a/lib/IR/LLVMContextImpl.cpp b/lib/IR/LLVMContextImpl.cpp
index 24d325246d..4c2791f0a8 100644
--- a/lib/IR/LLVMContextImpl.cpp
+++ b/lib/IR/LLVMContextImpl.cpp
@@ -16,8 +16,6 @@
#include "llvm/IR/Attributes.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Module.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Regex.h"
#include <algorithm>
using namespace llvm;
@@ -48,81 +46,6 @@ LLVMContextImpl::LLVMContextImpl(LLVMContext &C)
}
namespace {
-
-/// \brief Regular expression corresponding to the value given in one of the
-/// -pass-remarks* command line flags. Passes whose name matches this regexp
-/// will emit a diagnostic when calling the associated diagnostic function
-/// (emitOptimizationRemark, emitOptimizationRemarkMissed or
-/// emitOptimizationRemarkAnalysis).
-struct PassRemarksOpt {
- std::shared_ptr<Regex> Pattern;
-
- void operator=(const std::string &Val) {
- // Create a regexp object to match pass names for emitOptimizationRemark.
- if (!Val.empty()) {
- Pattern = std::make_shared<Regex>(Val);
- std::string RegexError;
- if (!Pattern->isValid(RegexError))
- report_fatal_error("Invalid regular expression '" + Val +
- "' in -pass-remarks: " + RegexError,
- false);
- }
- };
-};
-
-static PassRemarksOpt PassRemarksOptLoc;
-static PassRemarksOpt PassRemarksMissedOptLoc;
-static PassRemarksOpt PassRemarksAnalysisOptLoc;
-
-// -pass-remarks
-// Command line flag to enable emitOptimizationRemark()
-static cl::opt<PassRemarksOpt, true, cl::parser<std::string>>
-PassRemarks("pass-remarks", cl::value_desc("pattern"),
- cl::desc("Enable optimization remarks from passes whose name match "
- "the given regular expression"),
- cl::Hidden, cl::location(PassRemarksOptLoc), cl::ValueRequired,
- cl::ZeroOrMore);
-
-// -pass-remarks-missed
-// Command line flag to enable emitOptimizationRemarkMissed()
-static cl::opt<PassRemarksOpt, true, cl::parser<std::string>> PassRemarksMissed(
- "pass-remarks-missed", cl::value_desc("pattern"),
- cl::desc("Enable missed optimization remarks from passes whose name match "
- "the given regular expression"),
- cl::Hidden, cl::location(PassRemarksMissedOptLoc), cl::ValueRequired,
- cl::ZeroOrMore);
-
-// -pass-remarks-analysis
-// Command line flag to enable emitOptimizationRemarkAnalysis()
-static cl::opt<PassRemarksOpt, true, cl::parser<std::string>>
-PassRemarksAnalysis(
- "pass-remarks-analysis", cl::value_desc("pattern"),
- cl::desc(
- "Enable optimization analysis remarks from passes whose name match "
- "the given regular expression"),
- cl::Hidden, cl::location(PassRemarksAnalysisOptLoc), cl::ValueRequired,
- cl::ZeroOrMore);
-}
-
-bool LLVMContextImpl::optimizationRemarkEnabledFor(
- const DiagnosticInfoOptimizationRemark *DI) const {
- return PassRemarksOptLoc.Pattern &&
- PassRemarksOptLoc.Pattern->match(DI->getPassName());
-}
-
-bool LLVMContextImpl::optimizationRemarkEnabledFor(
- const DiagnosticInfoOptimizationRemarkMissed *DI) const {
- return PassRemarksMissedOptLoc.Pattern &&
- PassRemarksMissedOptLoc.Pattern->match(DI->getPassName());
-}
-
-bool LLVMContextImpl::optimizationRemarkEnabledFor(
- const DiagnosticInfoOptimizationRemarkAnalysis *DI) const {
- return PassRemarksAnalysisOptLoc.Pattern &&
- PassRemarksAnalysisOptLoc.Pattern->match(DI->getPassName());
-}
-
-namespace {
struct DropReferences {
// Takes the value_type of a ConstantUniqueMap's internal map, whose 'second'
// is a Constant*.
diff --git a/lib/IR/LLVMContextImpl.h b/lib/IR/LLVMContextImpl.h
index 6ad9b8a70a..808c239bff 100644
--- a/lib/IR/LLVMContextImpl.h
+++ b/lib/IR/LLVMContextImpl.h
@@ -374,15 +374,6 @@ public:
typedef DenseMap<const Function *, ReturnInst *> PrefixDataMapTy;
PrefixDataMapTy PrefixDataMap;
- /// \brief Return true if the given pass name should emit optimization
- /// remarks.
- bool optimizationRemarkEnabledFor(
- const DiagnosticInfoOptimizationRemark *DI) const;
- bool optimizationRemarkEnabledFor(
- const DiagnosticInfoOptimizationRemarkMissed *DI) const;
- bool optimizationRemarkEnabledFor(
- const DiagnosticInfoOptimizationRemarkAnalysis *DI) const;
-
int getOrAddScopeRecordIdxEntry(MDNode *N, int ExistingIdx);
int getOrAddScopeInlinedAtIdxEntry(MDNode *Scope, MDNode *IA,int ExistingIdx);