[PATCH] D28934: Write a new SSAUpdater

Davide Italiano via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 30 21:18:56 PDT 2017


davide added a comment.

@dberlin I just came back to this while I was looking at NewGVN PRE.
I decided to give it a try to see how the API looked like and I personally didn't find any problems with it (I might just used it wrong, FWIW).

https://reviews.llvm.org/P7997

In particular, the old API `getValueInTheMiddleOfTheBlock` has been source of confusion (at least to me).

With your patch and my patch on top of it, I saw still one test failing:

  --- /home/davide/old.ll 2017-05-30 20:56:21.058869000 -0700
  +++ /home/davide/new.ll 2017-05-30 20:56:30.450514797 -0700
  @@ -316,7 +316,7 @@
     br label %block4
  
   block4:                                           ; preds = %block3, %block2
  -  %D = phi i32 [ 87, %block2 ], [ 97, %block3 ]
  +  %D = phi i32 [ 97, %block3 ], [ 87, %block2 ]
     %A = phi i32 [ -1, %block2 ], [ 42, %block3 ]
     br i1 %cmpxy, label %block5, label %exit
  
  @@ -350,7 +350,7 @@
     br label %loop
  
   loop:                                             ; preds = %loop, %entry
  -  %Y2 = phi i8 [ %Y, %entry ], [ 0, %loop ]
  +  %Y2 = phi i8 [ 0, %loop ], [ %Y, %entry ]
     %i = phi i32 [ 4, %entry ], [ 192, %loop ]
     %X2 = getelementptr i8, i8* %p, i32 %i
     %cond = call i1 @cond2()
  @@ -372,7 +372,7 @@
     br label %loop
  
   loop:                                             ; preds = %cont, %entry
  -  %Y2 = phi i8 [ %Y, %entry ], [ %Y2.pre, %cont ]
  +  %Y2 = phi i8 [ %Y2.pre, %cont ], [ %Y, %entry ]
     %i = phi i32 [ 4, %entry ], [ 3, %cont ]
     %X2 = getelementptr i8, i8* %p, i32 %i
     %cond = call i1 @cond2()

I guess this is because we don't have a consistent ordering of PHI args. If that's the only problem, I might consider looking at it next (and then keep converting the remaining users).


https://reviews.llvm.org/D28934





More information about the llvm-commits mailing list