Great! That makes sense! Thank you!<div><div><br><div class="gmail_quote">On Fri, Sep 21, 2012 at 3:43 PM, Arnold Schwaighofer <span dir="ltr"><<a href="mailto:arnold.schwaighofer@gmail.com" target="_blank">arnold.schwaighofer@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You see the result for running basicaa after mem2reg.<br>
<br>
The IR after mem2reg will look like (you can look at it by doing<br>
-mem2reg -basicaa -aa-eval -print-all-alias-modref-info < test.ll<br>
-print-after-all)<br>
<br>
define void @_Z3fooPiS_S_(i32* noalias %a, i32* noalias %b, i32*<br>
noalias %c) nounwind {<br>
entry:<br>
<div class="im">  %"alloca point" = bitcast i32 0 to i32<br>
</div><div class="im">  br label %bb1<br>
<br>
bb:                                               ; preds = %bb1<br>
</div>  %0 = sext i32 %i.0 to i64<br>
  %1 = getelementptr inbounds i32* %a, i64 %0<br>
  %2 = load i32* %1, align 1<br>
  %3 = sext i32 %i.0 to i64<br>
  %4 = getelementptr inbounds i32* %b, i64 %3<br>
  %5 = load i32* %4, align 1<br>
  %6 = add nsw i32 %2, %5<br>
  %7 = sext i32 %i.0 to i64<br>
  %8 = getelementptr inbounds i32* %c, i64 %7<br>
  store i32 %6, i32* %8, align 1<br>
  %9 = add nsw i32 %i.0, 1<br>
<div class="im">  br label %bb1<br>
<br>
bb1:                                              ; preds = %bb, %entry<br>
</div>  %i.0 = phi i32 [ 0, %entry ], [ %9, %bb ]<br>
  %10 = icmp sle i32 %i.0, 9<br>
  br i1 %10, label %bb, label %bb2<br>
<div class="im"><br>
bb2:                                              ; preds = %bb1<br>
  br label %return<br>
<br>
return:                                           ; preds = %bb2<br>
  ret void<br>
}<br>
<br>
<br>
</div>The results your are getting are correct.<br>
<div class="HOEnZb"><div class="h5"><br>
On Fri, Sep 21, 2012 at 5:22 PM, Welson Sun <<a href="mailto:welson.sun@gmail.com">welson.sun@gmail.com</a>> wrote:<br>
> Here is the result of running mem2reg then basicaa, it is even worse: (%a<br>
> should be alias to %0, and partial alias to %3)<br>
><br>
> opt -mem2reg -basicaa -aa-eval -print-all-alias-modref-info < foo.s ><br>
> /dev/null<br>
> Function: foo: 6 pointers, 0 call sites<br>
>   NoAlias:      i32* %a, i32* %b<br>
>   NoAlias:      i32* %a, i32* %c<br>
>   NoAlias:      i32* %b, i32* %c<br>
>   PartialAlias: i32* %1, i32* %a<br>
>   NoAlias:      i32* %1, i32* %b<br>
>   NoAlias:      i32* %1, i32* %c<br>
>   NoAlias:      i32* %4, i32* %a<br>
>   PartialAlias: i32* %4, i32* %b<br>
>   NoAlias:      i32* %4, i32* %c<br>
>   NoAlias:      i32* %1, i32* %4<br>
>   NoAlias:      i32* %8, i32* %a<br>
>   NoAlias:      i32* %8, i32* %b<br>
>   PartialAlias: i32* %8, i32* %c<br>
>   NoAlias:      i32* %1, i32* %8<br>
>   NoAlias:      i32* %4, i32* %8<br>
><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Welson<div><br></div><div>Phone: (408) 418-8385</div><div>Email:  <a href="mailto:welson.sun@gmail.com" target="_blank">welson.sun@gmail.com</a></div>
<div><br></div><br>
</div></div>