[PATCH] D104950: [OpaquePtr] Support forward references in textual IR

Duncan P. N. Exon Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 25 18:23:53 PDT 2021


dexonsmith added a comment.

In D104950#2842046 <https://reviews.llvm.org/D104950#2842046>, @dexonsmith wrote:

> In D104950#2841883 <https://reviews.llvm.org/D104950#2841883>, @nikic wrote:
>
>> Out of curiosity, I ran `find . -name '*.ll' -exec echo '{}' \; -exec build/bin/verify-uselistorder {} \; >out 2>&1` without this patch, and hit quite a few failures :/
>
> Not sure how many failures you're seeing. I saw 132 when I ran it. https://reviews.llvm.org/D104959 brings that down to 60. Looking at the rest.

I looked at llvm/test/Transforms/CallSiteSplitting/lpad.ll. This fails because the implicit `i1* null` hung-off operands of the function don't get ordered properly. Here is a minimal repro:

  @personality = external global i8
  define void @f1(i1* %param) personality i8* @personality {
  entry:
    %cmp = icmp eq i1* %param, null
    unreachable
  }

The prefix-data and prologue-data fields are (implicitly) uses of `i1* null` because there's a `personality`. I'm having trouble reasoning about exactly how to fix this one since the bitcode reader handles these strangely... but I hacked verify-uselistorder to ignore mismatches for all `ConstantData` values, and that hides this and gets the failure list from 60 down to 35. (Really, no one should ever walk the use-list of `ConstantData`; it'd be worth guaranteeing that at some point, and then we could skip computing/storing use-list ordering for them...) I can probably whittle this down next week if it's blocking you.

Still curious to hear what the windows failure is.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D104950



More information about the llvm-commits mailing list