summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorZinovy Nis <zinovy.nis@gmail.com>2014-05-07 09:51:22 +0000
committerZinovy Nis <zinovy.nis@gmail.com>2014-05-07 09:51:22 +0000
commitda925c0d7c7a4e3857d29efda9579c16f67098ab (patch)
treeeb04fa79507bddd706c60ab4a1b2ec781a6ff7fa /llvm/lib/Transforms
parent79dffb412840c1487396be5fa07e8cfb8ac0d07d (diff)
downloadbcm5719-llvm-da925c0d7c7a4e3857d29efda9579c16f67098ab.tar.gz
bcm5719-llvm-da925c0d7c7a4e3857d29efda9579c16f67098ab.zip
[BUG][REFACTOR]
1) Fix for printing debug locations for absolute paths. 2) Location printing is moved into public method DebugLoc::print() to avoid re-inventing the wheel. Differential Revision: http://reviews.llvm.org/D3513 llvm-svn: 208177
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Vectorize/LoopVectorize.cpp45
1 files changed, 22 insertions, 23 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index e89237051b6..63548643b41 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -83,7 +83,6 @@
#include "llvm/Support/BranchProbability.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
-#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
@@ -480,22 +479,19 @@ static void setDebugLocFromInst(IRBuilder<> &B, const Value *Ptr) {
#ifndef NDEBUG
/// \return string containing a file name and a line # for the given
/// instruction.
-static format_object3<const char *, const char *, unsigned>
-getDebugLocString(const Instruction *I) {
- if (!I)
- return format<const char *, const char *, unsigned>("", "", "", 0U);
- MDNode *N = I->getMetadata("dbg");
- if (!N) {
- const StringRef ModuleName =
- I->getParent()->getParent()->getParent()->getModuleIdentifier();
- return format<const char *, const char *, unsigned>("%s", ModuleName.data(),
- "", 0U);
- }
- const DILocation Loc(N);
- const unsigned LineNo = Loc.getLineNumber();
- const char *DirName = Loc.getDirectory().data();
- const char *FileName = Loc.getFilename().data();
- return format("%s/%s:%u", DirName, FileName, LineNo);
+static std::string getDebugLocString(const Instruction *I) {
+ std::string Result;
+ if (I) {
+ raw_string_ostream OS(Result);
+ const DebugLoc &InstrDebugLoc = I->getDebugLoc();
+ if (!InstrDebugLoc.isUnknown())
+ InstrDebugLoc.print(I->getContext(), OS);
+ else
+ // Just print the module name.
+ OS << I->getParent()->getParent()->getParent()->getModuleIdentifier();
+ OS.flush();
+ }
+ return Result;
}
#endif
@@ -1109,10 +1105,15 @@ struct LoopVectorize : public FunctionPass {
bool processLoop(Loop *L) {
assert(L->empty() && "Only process inner loops.");
+
+#ifndef NDEBUG
+ const std::string DebugLocStr =
+ getDebugLocString(L->getHeader()->getFirstNonPHIOrDbgOrLifetime());
+#endif /* NDEBUG */
+
DEBUG(dbgs() << "\nLV: Checking a loop in \""
<< L->getHeader()->getParent()->getName() << "\" from "
- << getDebugLocString(L->getHeader()->getFirstNonPHIOrDbg())
- << "\n");
+ << DebugLocStr << "\n");
LoopVectorizeHints Hints(L, DisableUnrolling);
@@ -1203,10 +1204,8 @@ struct LoopVectorize : public FunctionPass {
const unsigned UF =
CM.selectUnrollFactor(OptForSize, Hints.getUnroll(), VF.Width, VF.Cost);
- DEBUG(dbgs() << "LV: Found a vectorizable loop ("
- << VF.Width << ") in "
- << getDebugLocString(L->getHeader()->getFirstNonPHIOrDbg())
- << '\n');
+ DEBUG(dbgs() << "LV: Found a vectorizable loop (" << VF.Width << ") in "
+ << DebugLocStr << '\n');
DEBUG(dbgs() << "LV: Unroll Factor is " << UF << '\n');
if (VF.Width == 1) {
OpenPOWER on IntegriCloud