<div dir="ltr">Hi tobi,<div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 3, 2013 at 12:21 AM, Tobias Grosser <span dir="ltr"><<a href="mailto:tobias@grosser.es" target="_blank">tobias@grosser.es</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On 06/29/2013 12:00 AM, Hongbin Zheng wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Author: ether<br>
Date: Sat Jun 29 02:00:14 2013<br>
New Revision: 185254<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=185254&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=185254&view=rev</a><br>
Log:<br>
TempScop: (Partial) Implement the printDetail function.<br>
</blockquote>
<br></div>
Thanks!<br>
<br>
Also, it would be nice to check the changes with clang-format before you commit them.<br>
<br>
If clang-format is in your path, you can just run 'make polly-check-format' (or 'make polly-update-format' to fix the formatting)<br>
<br>
Some comments inline.<br>
<br>
Cheers<br>
Tobias<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  void TempScop::printDetail(raw_<u></u>ostream &OS, ScalarEvolution *SE,<br>
                             LoopInfo *LI, const Region *CurR,<br>
-                           unsigned ind) const {}<br>
+                           unsigned ind) const {<br>
+<br>
+  // FIXME: Print other details rather than memory accesses.<br>
+  typedef Region::const_block_iterator bb_iterator;<br>
+  for (bb_iterator I = CurR->block_begin(), E = CurR->block_end(); I != E; ++I){<br>
+    BasicBlock *CurBlock = *I;<br>
+<br>
+    AccFuncMapType::const_iterator AccSetIt = AccFuncMap.find(CurBlock);<br>
+<br>
+    // Ignore trivial blocks that do not contain any memory access.<br>
+    if (AccSetIt == AccFuncMap.end()) continue;<br>
</blockquote>
<br></div>
It would be nice to move this into a separate function that is also used in place of the Scop::isTrivialBB() function in ScopInfo.cpp.<br></blockquote><div style>Ok </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>
Such a patch is approved for commit. ;-)</blockquote><div style>Well, this patch is reviewed before, you said once I shorten the commit message, it is ok to commit ;-)</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  void TempScopInfo::<u></u>buildScalarDependences(<u></u>Instruction *Inst, Region *R) {<br>
    // No need to translate these scalar dependences into polyhedral form, because<br>
<br>
Added: polly/trunk/test/TempScop/<u></u>tempscop-printing.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/polly/trunk/test/TempScop/tempscop-printing.ll?rev=185254&view=auto" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/polly/trunk/test/<u></u>TempScop/tempscop-printing.ll?<u></u>rev=185254&view=auto</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- polly/trunk/test/TempScop/<u></u>tempscop-printing.ll (added)<br>
+++ polly/trunk/test/TempScop/<u></u>tempscop-printing.ll Sat Jun 29 02:00:14 2013<br>
@@ -0,0 +1,51 @@<br>
+; RUN: opt %loadPolly -basicaa -polly-analyze-ir -analyze < %s | FileCheck %s<br>
</blockquote>
<br></div>
It would be nice to run this also with -polly-codegen-scev enabled.</blockquote><div style>Ok </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div class="h5">
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
+<br>
+; void f(long A[], int N, int *init_ptr) {<br>
+;   long i, j;<br>
+;<br>
+;   for (i = 0; i < N; ++i) {<br>
+;     init = *init_ptr;<br>
+;     for (i = 0; i < N; ++i) {<br>
+;       A[i] = init + 2;<br>
+;     }<br>
+;   }<br>
+; }<br>
+<br>
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-<u></u>i16:16:16-i32:32:32-i64:64:64-<u></u>f32:32:32-f64:64:64-v64:64:64-<u></u>v128:128:128-a0:0:64-s0:64:64-<u></u>f80:128:128"<br>
+target triple = "x86_64-unknown-linux-gnu"<br>
+<br>
+define void @f(i64* noalias %A, i64 %N, i64* noalias %init_ptr) nounwind {<br>
+entry:<br>
+  br label %for.i<br>
+<br>
+for.i:<br>
+  %indvar.i = phi i64 [ 0, %entry ], [ %indvar.i.next, %for.i.end ]<br>
+  %indvar.i.next = add nsw i64 %indvar.i, 1<br>
+  br label %entry.next<br>
+<br>
+entry.next:<br>
+; CHECK: BB: entry.next<br>
+  %init = load i64* %init_ptr<br>
+; CHECK:  Read init_ptr[0]<br>
+; CHECK:  Write init.s2a[0]<br>
+  br label %for.j<br>
+<br>
+for.j:<br>
+  %indvar.j = phi i64 [ 0, %entry.next ], [ %indvar.j.next, %for.j ]<br>
+; CHECK: BB: for.j<br>
+; CHECK: Read init.s2a[0]<br>
+; CHECK: Write A[{0,+,8}<%for.j>]<br>
+  %init_plus_two = add i64 %init, 2<br>
+  %scevgep = getelementptr i64* %A, i64 %indvar.j<br>
+  store i64 %init_plus_two, i64* %scevgep<br>
+  %indvar.j.next = add nsw i64 %indvar.j, 1<br>
+  %exitcond.j = icmp eq i64 %indvar.j.next, %N<br>
+  br i1 %exitcond.j, label %for.i.end, label %for.j<br>
+<br>
+for.i.end:<br>
+  %exitcond.i = icmp eq i64 %indvar.i.next, %N<br>
+  br i1 %exitcond.i, label %return, label %for.i<br>
+<br>
+return:<br>
+  ret void<br>
+}<br>
</blockquote>
<br></div></div>
Overall a very nice well targeted test case!<br>
<br>
Thanks,<br>
Tobi<br>
<br>
</blockquote></div><br></div></div>