[polly] r298194 - [IslExprBuilder] Print accessed memory locations with RuntimeDebugBuilder
Tobias Grosser via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 18 13:54:44 PDT 2017
Author: grosser
Date: Sat Mar 18 15:54:43 2017
New Revision: 298194
URL: http://llvm.org/viewvc/llvm-project?rev=298194&view=rev
Log:
[IslExprBuilder] Print accessed memory locations with RuntimeDebugBuilder
After this change, enabling -polly-codegen-add-debug-printing in combination
with -polly-codegen-generate-expressions allows us to instrument the compiled
binaries to not only print the values stored and loaded to a given memory
access, but also to print the accessed location with array name and
per-dimension offset:
MemRef_A[3][2]
Store to 6299784: 5.000000
MemRef_A[3][3]
Load from 6299788: 0.000000
MemRef_A[3][3]
Store to 6299788: 6.000000
This can be very helpful for debugging.
Modified:
polly/trunk/include/polly/CodeGen/RuntimeDebugBuilder.h
polly/trunk/lib/CodeGen/BlockGenerators.cpp
polly/trunk/lib/CodeGen/IslExprBuilder.cpp
Modified: polly/trunk/include/polly/CodeGen/RuntimeDebugBuilder.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/include/polly/CodeGen/RuntimeDebugBuilder.h?rev=298194&r1=298193&r2=298194&view=diff
==============================================================================
--- polly/trunk/include/polly/CodeGen/RuntimeDebugBuilder.h (original)
+++ polly/trunk/include/polly/CodeGen/RuntimeDebugBuilder.h Sat Mar 18 15:54:43 2017
@@ -149,4 +149,6 @@ private:
};
} // namespace polly
+extern bool PollyDebugPrinting;
+
#endif
Modified: polly/trunk/lib/CodeGen/BlockGenerators.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/BlockGenerators.cpp?rev=298194&r1=298193&r2=298194&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/BlockGenerators.cpp (original)
+++ polly/trunk/lib/CodeGen/BlockGenerators.cpp Sat Mar 18 15:54:43 2017
@@ -43,10 +43,12 @@ static cl::opt<bool> Aligned("enable-pol
cl::Hidden, cl::init(false), cl::ZeroOrMore,
cl::cat(PollyCategory));
-static cl::opt<bool> DebugPrinting(
+bool PollyDebugPrinting;
+static cl::opt<bool, true> DebugPrintingX(
"polly-codegen-add-debug-printing",
cl::desc("Add printf calls that show the values loaded/stored."),
- cl::Hidden, cl::init(false), cl::ZeroOrMore, cl::cat(PollyCategory));
+ cl::location(PollyDebugPrinting), cl::Hidden, cl::init(false),
+ cl::ZeroOrMore, cl::cat(PollyCategory));
BlockGenerator::BlockGenerator(
PollyIRBuilder &B, LoopInfo &LI, ScalarEvolution &SE, DominatorTree &DT,
@@ -232,7 +234,7 @@ Value *BlockGenerator::generateArrayLoad
Value *ScalarLoad = Builder.CreateAlignedLoad(
NewPointer, Load->getAlignment(), Load->getName() + "_p_scalar_");
- if (DebugPrinting)
+ if (PollyDebugPrinting)
RuntimeDebugBuilder::createCPUPrinter(Builder, "Load from ", NewPointer,
": ", ScalarLoad, "\n");
@@ -247,7 +249,7 @@ void BlockGenerator::generateArrayStore(
Value *ValueOperand = getNewValue(Stmt, Store->getValueOperand(), BBMap, LTS,
getLoopForStmt(Stmt));
- if (DebugPrinting)
+ if (PollyDebugPrinting)
RuntimeDebugBuilder::createCPUPrinter(Builder, "Store to ", NewPointer,
": ", ValueOperand, "\n");
Modified: polly/trunk/lib/CodeGen/IslExprBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/IslExprBuilder.cpp?rev=298194&r1=298193&r2=298194&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/IslExprBuilder.cpp (original)
+++ polly/trunk/lib/CodeGen/IslExprBuilder.cpp Sat Mar 18 15:54:43 2017
@@ -10,6 +10,7 @@
//===----------------------------------------------------------------------===//
#include "polly/CodeGen/IslExprBuilder.h"
+#include "polly/CodeGen/RuntimeDebugBuilder.h"
#include "polly/Options.h"
#include "polly/ScopInfo.h"
#include "polly/Support/GICHelper.h"
@@ -225,6 +226,9 @@ Value *IslExprBuilder::createAccessAddre
const ScopArrayInfo *SAI = nullptr;
+ if (PollyDebugPrinting)
+ RuntimeDebugBuilder::createCPUPrinter(Builder, isl_id_get_name(BaseId));
+
if (IDToSAI)
SAI = (*IDToSAI)[BaseId];
@@ -252,6 +256,8 @@ Value *IslExprBuilder::createAccessAddre
if (isl_ast_expr_get_op_n_arg(Expr) == 1) {
isl_ast_expr_free(Expr);
+ if (PollyDebugPrinting)
+ RuntimeDebugBuilder::createCPUPrinter(Builder, "\n");
return Base;
}
@@ -261,6 +267,9 @@ Value *IslExprBuilder::createAccessAddre
assert(NextIndex->getType()->isIntegerTy() &&
"Access index should be an integer");
+ if (PollyDebugPrinting)
+ RuntimeDebugBuilder::createCPUPrinter(Builder, "[", NextIndex, "]");
+
if (!IndexOp) {
IndexOp = NextIndex;
} else {
@@ -301,6 +310,8 @@ Value *IslExprBuilder::createAccessAddre
Access = Builder.CreateGEP(Base, IndexOp, "polly.access." + BaseName);
+ if (PollyDebugPrinting)
+ RuntimeDebugBuilder::createCPUPrinter(Builder, "\n");
isl_ast_expr_free(Expr);
return Access;
}
More information about the llvm-commits
mailing list