+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
; RUN: opt -passes=instcombine -S < %s | FileCheck %s
target datalayout = "e-m:e-p:64:64:64-i64:64-f80:128-n8:16:32:64-S128"
; Check that nonnull metadata is propagated from dominating load.
-; CHECK-LABEL: @combine_metadata_dominance1(
-; CHECK-LABEL: bb1:
-; CHECK: load ptr, ptr %p, align 8, !nonnull !0
-; CHECK-NOT: load ptr, ptr %p
define void @combine_metadata_dominance1(ptr %p) {
+; CHECK-LABEL: define void @combine_metadata_dominance1
+; CHECK-SAME: (ptr [[P:%.*]]) {
+; CHECK-NEXT: entry:
+; CHECK-NEXT: br label [[BB1:%.*]]
+; CHECK: bb1:
+; CHECK-NEXT: [[A:%.*]] = load ptr, ptr [[P]], align 8, !nonnull !0
+; CHECK-NEXT: store i32 0, ptr [[A]], align 4
+; CHECK-NEXT: ret void
+;
entry:
%a = load ptr, ptr %p, !nonnull !0
br label %bb1
; Check that nonnull from the dominated load does not get propagated.
; There are some cases where it would be safe to keep it.
-; CHECK-LABEL: @combine_metadata_dominance2(
-; CHECK-NOT: nonnull
define void @combine_metadata_dominance2(ptr %p, i1 %c1) {
+; CHECK-LABEL: define void @combine_metadata_dominance2
+; CHECK-SAME: (ptr [[P:%.*]], i1 [[C1:%.*]]) {
+; CHECK-NEXT: entry:
+; CHECK-NEXT: br i1 [[C1]], label [[BB1:%.*]], label [[BB2:%.*]]
+; CHECK: bb1:
+; CHECK-NEXT: [[A:%.*]] = load ptr, ptr [[P]], align 8
+; CHECK-NEXT: store i32 0, ptr [[A]], align 4
+; CHECK-NEXT: ret void
+; CHECK: bb2:
+; CHECK-NEXT: ret void
+;
entry:
%a = load ptr, ptr %p
br i1 %c1, label %bb1, label %bb2