[PATCH] D65593: [Attributor] Deduction based on path exploration

Johannes Doerfert via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 5 12:07:16 PST 2020


jdoerfert added a comment.

I have not convinced myself that this covers the recursive case properly, maybe that was never the intend though. Can we have a test like this:

  void foo(int a, int b, int c, int *ptr) {
    if (a) {
      if (b)
        *ptr = 1;
      else
        *ptr = 2;
    } else {
      if (c)
        *ptr = 3;
      else
        *ptr = 4;
    }
  }

and maybe also

  void foo(int a, int b, int c, int *ptr) {
    if (a) {
      if (b)
        *ptr = 1;
      else
        *ptr = 2;
    } else {
      if (c)
        *ptr = 3;
      else
        foo(1, 1, 1, ptr);
    }
  }



================
Comment at: llvm/lib/Transforms/IPO/Attributor.cpp:1032
+    // ParentState_m = ChildState_{m, 1} /\ ChildState_{2, 2} /\ ... /\
+    // ChildState_{1, n_m}
+    //
----------------
I don't get the comment. What are the two indices of ChildState and why is the second ChildState "out-of-sync"?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65593/new/

https://reviews.llvm.org/D65593





More information about the llvm-commits mailing list