11342b861SArthur Eubanks; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 21342b861SArthur Eubanks; RUN: opt -passes=dse -S < %s | FileCheck %s 31342b861SArthur Eubanks 41342b861SArthur Eubanks@global = external constant i8 51342b861SArthur Eubanks 61342b861SArthur Eubanksdefine void @f() { 71342b861SArthur Eubanks; CHECK-LABEL: @f( 8c603cefbSNikita Popov; CHECK-NEXT: [[TMP1:%.*]] = call noalias ptr @_Znwm(i64 32) 9c603cefbSNikita Popov; CHECK-NEXT: [[TMP2:%.*]] = icmp ugt ptr [[TMP1]], @global 101342b861SArthur Eubanks; CHECK-NEXT: call void @llvm.assume(i1 [[TMP2]]) 11*fd95f398SFlorian Hahn; CHECK-NEXT: store i8 0, ptr [[TMP1]], align 1 121342b861SArthur Eubanks; CHECK-NEXT: ret void 131342b861SArthur Eubanks; 14c603cefbSNikita Popov %tmp1 = call noalias ptr @_Znwm(i64 32) 15c603cefbSNikita Popov %tmp2 = icmp ugt ptr %tmp1, @global 161342b861SArthur Eubanks call void @llvm.assume(i1 %tmp2) 17c603cefbSNikita Popov store i8 0, ptr %tmp1, align 1 181342b861SArthur Eubanks ret void 191342b861SArthur Eubanks} 201342b861SArthur Eubanks 2147130384SArthur Eubanksdefine void @f2() { 2247130384SArthur Eubanks; CHECK-LABEL: @f2( 23c603cefbSNikita Popov; CHECK-NEXT: [[TMP1:%.*]] = call noalias ptr @_Znwm(i64 32) 24c603cefbSNikita Popov; CHECK-NEXT: [[TMP2:%.*]] = icmp ugt ptr [[TMP1]], @global 2547130384SArthur Eubanks; CHECK-NEXT: call void @llvm.assume(i1 [[TMP2]]) 26*fd95f398SFlorian Hahn; CHECK-NEXT: store i8 0, ptr [[TMP1]], align 1 27c603cefbSNikita Popov; CHECK-NEXT: call void @quux(ptr @global) 2847130384SArthur Eubanks; CHECK-NEXT: ret void 2947130384SArthur Eubanks; 30c603cefbSNikita Popov %tmp1 = call noalias ptr @_Znwm(i64 32) 31c603cefbSNikita Popov %tmp2 = icmp ugt ptr %tmp1, @global 3247130384SArthur Eubanks call void @llvm.assume(i1 %tmp2) 33c603cefbSNikita Popov store i8 0, ptr %tmp1, align 1 34c603cefbSNikita Popov call void @quux(ptr @global) 3547130384SArthur Eubanks ret void 3647130384SArthur Eubanks} 3747130384SArthur Eubanks 38deb5bd12SNikita Popov; FIXME: This is a miscompile 39deb5bd12SNikita Popovdefine void @pr70547() { 40deb5bd12SNikita Popov; CHECK-LABEL: @pr70547( 41deb5bd12SNikita Popov; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1 42*fd95f398SFlorian Hahn; CHECK-NEXT: store i8 0, ptr [[A]], align 1 43deb5bd12SNikita Popov; CHECK-NEXT: [[CALL:%.*]] = call ptr @quux(ptr [[A]]) #[[ATTR1:[0-9]+]] 44deb5bd12SNikita Popov; CHECK-NEXT: [[V:%.*]] = load i8, ptr [[CALL]], align 1 45deb5bd12SNikita Popov; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[V]], 1 46deb5bd12SNikita Popov; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]]) 47deb5bd12SNikita Popov; CHECK-NEXT: ret void 48deb5bd12SNikita Popov; 49deb5bd12SNikita Popov %a = alloca i8 50deb5bd12SNikita Popov store i8 0, ptr %a 51deb5bd12SNikita Popov %call = call ptr @quux(ptr %a) memory(none) nounwind willreturn 52deb5bd12SNikita Popov %v = load i8, ptr %call 53deb5bd12SNikita Popov %cmp = icmp ne i8 %v, 1 54deb5bd12SNikita Popov call void @llvm.assume(i1 %cmp) 55deb5bd12SNikita Popov ret void 56deb5bd12SNikita Popov} 57deb5bd12SNikita Popov 58c603cefbSNikita Popovdeclare ptr @_Znwm(i64) 591342b861SArthur Eubanks 601342b861SArthur Eubanksdeclare void @llvm.assume(i1) 6147130384SArthur Eubanks 62c603cefbSNikita Popovdeclare void @quux(ptr) 63