diff options
| author | Piotr Padlewski <piotr.padlewski@gmail.com> | 2018-05-23 09:16:44 +0000 |
|---|---|---|
| committer | Piotr Padlewski <piotr.padlewski@gmail.com> | 2018-05-23 09:16:44 +0000 |
| commit | d6f7346a4b4bdbdfef9ba7a5b8619e42091e2440 (patch) | |
| tree | 9c009d37ea6f02879925ab71d94ac81a32701753 /llvm/test/Analysis/ValueTracking/known-nonnull-at.ll | |
| parent | eb13d3d22e9bd303b4065b372a692cd04e4b8cc1 (diff) | |
| download | bcm5719-llvm-d6f7346a4b4bdbdfef9ba7a5b8619e42091e2440.tar.gz bcm5719-llvm-d6f7346a4b4bdbdfef9ba7a5b8619e42091e2440.zip | |
Fix aliasing of launder.invariant.group
Summary:
Patch for capture tracking broke
bootstrap of clang with -fstict-vtable-pointers
which resulted in debbugging nightmare. It was fixed
https://reviews.llvm.org/D46900 but as it turned
out, there were other parts like inliner (computing of
noalias metadata) that I found after bootstraping with enabled
assertions.
Reviewers: hfinkel, rsmith, chandlerc, amharc, kuhar
Subscribers: JDevlieghere, eraman, llvm-commits, hiraditya
Differential Revision: https://reviews.llvm.org/D47088
llvm-svn: 333070
Diffstat (limited to 'llvm/test/Analysis/ValueTracking/known-nonnull-at.ll')
| -rw-r--r-- | llvm/test/Analysis/ValueTracking/known-nonnull-at.ll | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/test/Analysis/ValueTracking/known-nonnull-at.ll b/llvm/test/Analysis/ValueTracking/known-nonnull-at.ll index 93ef4f8c4c4..00eea73ca2d 100644 --- a/llvm/test/Analysis/ValueTracking/known-nonnull-at.ll +++ b/llvm/test/Analysis/ValueTracking/known-nonnull-at.ll @@ -98,3 +98,24 @@ exc: unreachable } +declare i8* @returningPtr(i8* returned %p) + +define i1 @nonnullReturnTest(i8* nonnull %x) { +; CHECK-LABEL: @nonnullReturnTest( +; CHECK-NEXT: %x2 = call i8* @returningPtr(i8* %x) +; CHECK-NEXT: ret i1 false + %x2 = call i8* @returningPtr(i8* %x) + %null_check = icmp eq i8* %x2, null + ret i1 %null_check +} + +define i1 @unknownReturnTest(i8* %x) { +; CHECK-LABEL: @unknownReturnTest( +; CHECK-NEXT: %x2 = call i8* @returningPtr(i8* %x) +; CHECK-NEXT: %null_check = icmp eq i8* %x2, null +; CHECK-NEXT: ret i1 %null_check + %x2 = call i8* @returningPtr(i8* %x) + %null_check = icmp eq i8* %x2, null + ret i1 %null_check +} + |

