brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 39af513 Raw
86 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=ipsccp -S %s | FileCheck %s3 4@y = common global [1 x i32] zeroinitializer, align 45@x = common global [1 x i32] zeroinitializer, align 46 7define i32 @eq_undereferenceable(ptr %p) {8; CHECK-LABEL: @eq_undereferenceable(9; CHECK-NEXT:  entry:10; CHECK-NEXT:    store i32 1, ptr @y, align 411; CHECK-NEXT:    [[CMP:%.*]] = icmp eq ptr [[P:%.*]], getelementptr inbounds (i32, ptr @x, i64 1)12; CHECK-NEXT:    br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]13; CHECK:       if.then:14; CHECK-NEXT:    store i32 2, ptr getelementptr inbounds (i32, ptr @x, i64 1), align 415; CHECK-NEXT:    br label [[IF_END]]16; CHECK:       if.end:17; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @y, align 418; CHECK-NEXT:    ret i32 [[TMP0]]19;20entry:21  store i32 1, ptr @y, align 422  %cmp = icmp eq ptr %p, getelementptr inbounds (i32, ptr @x, i64 1)23  br i1 %cmp, label %if.then, label %if.end24 25if.then:                                          ; preds = %entry26  store i32 2, ptr %p, align 427  br label %if.end28 29if.end:                                           ; preds = %if.then, %entry30  %0 = load i32, ptr @y, align 431  ret i32 %032}33 34 35define i32 @eq_dereferenceable(ptr %p) {36; CHECK-LABEL: @eq_dereferenceable(37; CHECK-NEXT:  entry:38; CHECK-NEXT:    store i32 1, ptr @y, align 439; CHECK-NEXT:    [[CMP:%.*]] = icmp eq ptr [[P:%.*]], @x40; CHECK-NEXT:    br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]41; CHECK:       if.then:42; CHECK-NEXT:    store i32 2, ptr @x, align 443; CHECK-NEXT:    br label [[IF_END]]44; CHECK:       if.end:45; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr @y, align 446; CHECK-NEXT:    ret i32 [[TMP0]]47;48entry:49  store i32 1, ptr @y, align 450  %cmp = icmp eq ptr %p, @x51  br i1 %cmp, label %if.then, label %if.end52 53if.then:                                          ; preds = %entry54  store i32 2, ptr %p, align 455  br label %if.end56 57if.end:                                           ; preds = %if.then, %entry58  %0 = load i32, ptr @y, align 459  ret i32 %060}61 62define i1 @eq_undereferenceable_cmp_simp(ptr %p) {63; CHECK-LABEL: @eq_undereferenceable_cmp_simp(64; CHECK-NEXT:  entry:65; CHECK-NEXT:    [[CMP_0:%.*]] = icmp eq ptr [[P:%.*]], getelementptr inbounds (i32, ptr @x, i64 1)66; CHECK-NEXT:    br i1 [[CMP_0]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]67; CHECK:       if.then:68; CHECK-NEXT:    store i32 2, ptr getelementptr inbounds (i32, ptr @x, i64 1), align 469; CHECK-NEXT:    ret i1 true70; CHECK:       if.end:71; CHECK-NEXT:    ret i1 false72;73entry:74  %cmp.0 = icmp eq ptr %p, getelementptr inbounds (i32, ptr @x, i64 1)75  br i1 %cmp.0, label %if.then, label %if.end76 77if.then:                                          ; preds = %entry78  store i32 2, ptr %p, align 479  %cmp.1 = icmp eq ptr %p, getelementptr inbounds (i32, ptr @x, i64 1)80  ret i1 %cmp.181 82if.end:                                           ; preds = %if.then, %entry83  %cmp.2 = icmp eq ptr %p, getelementptr inbounds (i32, ptr @x, i64 1)84  ret i1 %cmp.285}86