35 lines · plain
1; RUN: opt -S -passes=instsimplify,instcombine < %s | FileCheck %s2 3; CHECK-LABEL: define void @checkNonnullLaunder()4define void @checkNonnullLaunder() {5; CHECK: %[[p:.*]] = call ptr @llvm.launder.invariant.group.p0(ptr nonnull %0)6; CHECK: call void @use(ptr nonnull %[[p]])7entry:8 %0 = alloca i8, align 89 10 %p = call ptr @llvm.launder.invariant.group.p0(ptr %0)11 %p2 = call ptr @llvm.launder.invariant.group.p0(ptr %p)12 call void @use(ptr %p2)13 14 ret void15}16 17; CHECK-LABEL: define void @checkNonnullStrip()18define void @checkNonnullStrip() {19; CHECK: %[[p:.*]] = call ptr @llvm.strip.invariant.group.p0(ptr nonnull %0)20; CHECK: call void @use(ptr nonnull %[[p]])21entry:22 %0 = alloca i8, align 823 24 %p = call ptr @llvm.strip.invariant.group.p0(ptr %0)25 %p2 = call ptr @llvm.strip.invariant.group.p0(ptr %p)26 call void @use(ptr %p2)27 28 ret void29}30 31declare ptr @llvm.launder.invariant.group.p0(ptr)32declare ptr @llvm.strip.invariant.group.p0(ptr)33 34declare void @use(ptr)35