summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2013-02-08 21:48:29 +0000
committerBob Wilson <bob.wilson@apple.com>2013-02-08 21:48:29 +0000
commit58446916b71c4ff79962081ea7c4df078c388b0e (patch)
treebcdb044c5d6910123197f8a861ca0b11d33874a0 /lib
parentb2d1275188c997e279293afc031a88e03871f9e0 (diff)
downloadllvm-58446916b71c4ff79962081ea7c4df078c388b0e.tar.gz
llvm-58446916b71c4ff79962081ea7c4df078c388b0e.tar.bz2
llvm-58446916b71c4ff79962081ea7c4df078c388b0e.tar.xz
Revert "Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>"
This reverts r171041. This was a nice idea that didn't work out well. Clang warnings need to be associated with warning groups so that they can be selectively disabled, promoted to errors, etc. This simplistic patch didn't allow for that. Enhancing it to provide some way for the backend to specify a front-end warning type seems like overkill for the few uses of this, at least for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174748 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Analysis/ProfileDataLoaderPass.cpp4
-rw-r--r--lib/Analysis/ProfileInfoLoaderPass.cpp17
-rw-r--r--lib/CodeGen/IntrinsicLowering.cpp36
-rw-r--r--lib/IR/LLVMContext.cpp29
-rw-r--r--lib/Transforms/Instrumentation/EdgeProfiling.cpp5
-rw-r--r--lib/Transforms/Instrumentation/OptimalEdgeProfiling.cpp5
-rw-r--r--lib/Transforms/Instrumentation/PathProfiling.cpp4
7 files changed, 31 insertions, 69 deletions
diff --git a/lib/Analysis/ProfileDataLoaderPass.cpp b/lib/Analysis/ProfileDataLoaderPass.cpp
index 51b7f1d869..2ee0093a8f 100644
--- a/lib/Analysis/ProfileDataLoaderPass.cpp
+++ b/lib/Analysis/ProfileDataLoaderPass.cpp
@@ -177,8 +177,8 @@ bool ProfileMetadataLoaderPass::runOnModule(Module &M) {
unsigned ReadCount = matchEdges(M, PB, Counters);
if (ReadCount != Counters.size()) {
- M.getContext().emitWarning("profile information is inconsistent "
- "with the current program");
+ errs() << "WARNING: profile information is inconsistent with "
+ << "the current program!\n";
}
NumEdgesRead = ReadCount;
diff --git a/lib/Analysis/ProfileInfoLoaderPass.cpp b/lib/Analysis/ProfileInfoLoaderPass.cpp
index 094c107c0a..346f8d6d62 100644
--- a/lib/Analysis/ProfileInfoLoaderPass.cpp
+++ b/lib/Analysis/ProfileInfoLoaderPass.cpp
@@ -19,7 +19,6 @@
#include "llvm/Analysis/ProfileInfoLoader.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/InstrTypes.h"
-#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Support/CFG.h"
@@ -171,8 +170,8 @@ bool LoaderPass::runOnModule(Module &M) {
}
}
if (ReadCount != Counters.size()) {
- M.getContext().emitWarning("profile information is inconsistent "
- "with the current program");
+ errs() << "WARNING: profile information is inconsistent with "
+ << "the current program!\n";
}
NumEdgesRead = ReadCount;
}
@@ -219,8 +218,8 @@ bool LoaderPass::runOnModule(Module &M) {
}
}
if (ReadCount != Counters.size()) {
- M.getContext().emitWarning("profile information is inconsistent "
- "with the current program");
+ errs() << "WARNING: profile information is inconsistent with "
+ << "the current program!\n";
}
NumEdgesRead = ReadCount;
}
@@ -240,8 +239,8 @@ bool LoaderPass::runOnModule(Module &M) {
BlockInformation[F][BB] = (double)Counters[ReadCount++];
}
if (ReadCount != Counters.size()) {
- M.getContext().emitWarning("profile information is inconsistent "
- "with the current program");
+ errs() << "WARNING: profile information is inconsistent with "
+ << "the current program!\n";
}
}
@@ -259,8 +258,8 @@ bool LoaderPass::runOnModule(Module &M) {
FunctionInformation[F] = (double)Counters[ReadCount++];
}
if (ReadCount != Counters.size()) {
- M.getContext().emitWarning("profile information is inconsistent "
- "with the current program");
+ errs() << "WARNING: profile information is inconsistent with "
+ << "the current program!\n";
}
}
diff --git a/lib/CodeGen/IntrinsicLowering.cpp b/lib/CodeGen/IntrinsicLowering.cpp
index 16e7968eb4..07f0ccf52f 100644
--- a/lib/CodeGen/IntrinsicLowering.cpp
+++ b/lib/CodeGen/IntrinsicLowering.cpp
@@ -413,30 +413,22 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
}
case Intrinsic::stacksave:
+ case Intrinsic::stackrestore: {
if (!Warned)
- Context.emitWarning("this target does not support the "
- "llvm.stacksave intrinsic");
- Warned = true;
- CI->replaceAllUsesWith(Constant::getNullValue(CI->getType()));
- break;
-
- case Intrinsic::stackrestore:
- if (!Warned)
- Context.emitWarning("this target does not support the "
- "llvm.stackrestore intrinsic");
+ errs() << "WARNING: this target does not support the llvm.stack"
+ << (Callee->getIntrinsicID() == Intrinsic::stacksave ?
+ "save" : "restore") << " intrinsic.\n";
Warned = true;
+ if (Callee->getIntrinsicID() == Intrinsic::stacksave)
+ CI->replaceAllUsesWith(Constant::getNullValue(CI->getType()));
break;
+ }
case Intrinsic::returnaddress:
- Context.emitWarning("this target does not support the "
- "llvm.returnaddress intrinsic");
- CI->replaceAllUsesWith(ConstantPointerNull::get(
- cast<PointerType>(CI->getType())));
- break;
-
case Intrinsic::frameaddress:
- Context.emitWarning("this target does not support the "
- "llvm.frameaddress intrinsic");
+ errs() << "WARNING: this target does not support the llvm."
+ << (Callee->getIntrinsicID() == Intrinsic::returnaddress ?
+ "return" : "frame") << "address intrinsic.\n";
CI->replaceAllUsesWith(ConstantPointerNull::get(
cast<PointerType>(CI->getType())));
break;
@@ -446,12 +438,12 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
case Intrinsic::pcmarker:
break; // Simply strip out pcmarker on unsupported architectures
- case Intrinsic::readcyclecounter:
- Context.emitWarning("this target does not support the "
- "llvm.readcyclecounter intrinsic; "
- "it is being lowered to a constant 0");
+ case Intrinsic::readcyclecounter: {
+ errs() << "WARNING: this target does not support the llvm.readcyclecoun"
+ << "ter intrinsic. It is being lowered to a constant 0\n";
CI->replaceAllUsesWith(ConstantInt::get(Type::getInt64Ty(Context), 0));
break;
+ }
case Intrinsic::dbg_declare:
break; // Simply strip out debugging intrinsics
diff --git a/lib/IR/LLVMContext.cpp b/lib/IR/LLVMContext.cpp
index 282779c7f4..774c591a3c 100644
--- a/lib/IR/LLVMContext.cpp
+++ b/lib/IR/LLVMContext.cpp
@@ -95,30 +95,16 @@ void LLVMContext::emitError(const Twine &ErrorStr) {
emitError(0U, ErrorStr);
}
-void LLVMContext::emitWarning(const Twine &ErrorStr) {
- emitWarning(0U, ErrorStr);
-}
-
-static unsigned getSrcLocation(const Instruction *I) {
+void LLVMContext::emitError(const Instruction *I, const Twine &ErrorStr) {
unsigned LocCookie = 0;
if (const MDNode *SrcLoc = I->getMetadata("srcloc")) {
if (SrcLoc->getNumOperands() != 0)
if (const ConstantInt *CI = dyn_cast<ConstantInt>(SrcLoc->getOperand(0)))
LocCookie = CI->getZExtValue();
}
- return LocCookie;
-}
-
-void LLVMContext::emitError(const Instruction *I, const Twine &ErrorStr) {
- unsigned LocCookie = getSrcLocation(I);
return emitError(LocCookie, ErrorStr);
}
-void LLVMContext::emitWarning(const Instruction *I, const Twine &ErrorStr) {
- unsigned LocCookie = getSrcLocation(I);
- return emitWarning(LocCookie, ErrorStr);
-}
-
void LLVMContext::emitError(unsigned LocCookie, const Twine &ErrorStr) {
// If there is no error handler installed, just print the error and exit.
if (pImpl->DiagHandler == 0) {
@@ -132,19 +118,6 @@ void LLVMContext::emitError(unsigned LocCookie, const Twine &ErrorStr) {
pImpl->DiagHandler(Diag, pImpl->DiagContext, LocCookie);
}
-void LLVMContext::emitWarning(unsigned LocCookie, const Twine &ErrorStr) {
- // If there is no handler installed, just print the warning.
- if (pImpl->DiagHandler == 0) {
- errs() << "warning: " << ErrorStr << "\n";
- return;
- }
-
- // If we do have a handler, we can report the warning.
- SMDiagnostic Diag("", SourceMgr::DK_Warning, ErrorStr.str());
-
- pImpl->DiagHandler(Diag, pImpl->DiagContext, LocCookie);
-}
-
//===----------------------------------------------------------------------===//
// Metadata Kind Uniquing
//===----------------------------------------------------------------------===//
diff --git a/lib/Transforms/Instrumentation/EdgeProfiling.cpp b/lib/Transforms/Instrumentation/EdgeProfiling.cpp
index 0b18b4ce64..a2459fbafe 100644
--- a/lib/Transforms/Instrumentation/EdgeProfiling.cpp
+++ b/lib/Transforms/Instrumentation/EdgeProfiling.cpp
@@ -21,7 +21,6 @@
#include "llvm/Transforms/Instrumentation.h"
#include "ProfilingUtils.h"
#include "llvm/ADT/Statistic.h"
-#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Support/raw_ostream.h"
@@ -55,8 +54,8 @@ ModulePass *llvm::createEdgeProfilerPass() { return new EdgeProfiler(); }
bool EdgeProfiler::runOnModule(Module &M) {
Function *Main = M.getFunction("main");
if (Main == 0) {
- M.getContext().emitWarning("cannot insert edge profiling into a module"
- " with no main function");
+ errs() << "WARNING: cannot insert edge profiling into a module"
+ << " with no main function!\n";
return false; // No main, no instrumentation!
}
diff --git a/lib/Transforms/Instrumentation/OptimalEdgeProfiling.cpp b/lib/Transforms/Instrumentation/OptimalEdgeProfiling.cpp
index c5a1fe9188..b45aef65bc 100644
--- a/lib/Transforms/Instrumentation/OptimalEdgeProfiling.cpp
+++ b/lib/Transforms/Instrumentation/OptimalEdgeProfiling.cpp
@@ -22,7 +22,6 @@
#include "llvm/Analysis/ProfileInfo.h"
#include "llvm/Analysis/ProfileInfoLoader.h"
#include "llvm/IR/Constants.h"
-#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Support/Debug.h"
@@ -76,8 +75,8 @@ inline static void printEdgeCounter(ProfileInfo::Edge e,
bool OptimalEdgeProfiler::runOnModule(Module &M) {
Function *Main = M.getFunction("main");
if (Main == 0) {
- M.getContext().emitWarning("cannot insert edge profiling into a module"
- " with no main function");
+ errs() << "WARNING: cannot insert edge profiling into a module"
+ << " with no main function!\n";
return false; // No main, no instrumentation!
}
diff --git a/lib/Transforms/Instrumentation/PathProfiling.cpp b/lib/Transforms/Instrumentation/PathProfiling.cpp
index 358bbeb3c8..7de73269cf 100644
--- a/lib/Transforms/Instrumentation/PathProfiling.cpp
+++ b/lib/Transforms/Instrumentation/PathProfiling.cpp
@@ -1345,8 +1345,8 @@ bool PathProfiler::runOnModule(Module &M) {
Main = M.getFunction("MAIN__");
if (!Main) {
- Context->emitWarning("cannot insert edge profiling into a module"
- " with no main function");
+ errs() << "WARNING: cannot insert path profiling into a module"
+ << " with no main function!\n";
return false;
}