[PATCH] D141386: [LangRef] Make !range, !nonnull and !align return poison instead of IUB

Nuno Lopes via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 12 09:19:22 PST 2023


nlopes added a comment.

In D141386#4047344 <https://reviews.llvm.org/D141386#4047344>, @nikic wrote:

> In D141386#4044303 <https://reviews.llvm.org/D141386#4044303>, @nlopes wrote:
>
>> Sounds good, thanks!
>> I implemented this in Alive2 and I got zero failures in LLVM's test suite. Either it doesn't have many !ranges or we are good.
>
> Shouldn't this test have failed? https://github.com/llvm/llvm-project/blob/main/llvm/test/Transforms/Mem2Reg/preserve-nonnull-load-metadata.ll Or did you only adjust `!range` but not `!nonnull`?

It does now:

  define ptr @no_store_single_load() {
  %entry:
    %buf = alloca i64 8, align 8
    %buf.load = load ptr, ptr %buf, align 8
    %buf.load_2 = !nonnull ptr %buf.load
    ret ptr %buf.load_2
  }
  =>
  define ptr @no_store_single_load() noreturn nonnull nofree noalias willreturn memory(none) {
  %entry:
    assume i1 0
  }
  Transformation doesn't verify!
  
  ERROR: Source is more defined than target

I'll rerun LLVM unit tests again.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D141386



More information about the llvm-commits mailing list