1; RUN: opt -S -passes=gvn < %s | FileCheck %s 2; PR13694 3 4target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 5target triple = "x86_64-apple-macosx10.8.0" 6 7declare noalias ptr @malloc(i64) nounwind allockind("alloc,uninitialized") allocsize(0) 8 9define noalias ptr @test1() nounwind uwtable ssp { 10entry: 11 %call = tail call ptr @malloc(i64 100) nounwind 12 %0 = load i8, ptr %call, align 1 13 %tobool = icmp eq i8 %0, 0 14 br i1 %tobool, label %if.end, label %if.then 15 16if.then: ; preds = %entry 17 store i8 0, ptr %call, align 1 18 br label %if.end 19 20if.end: ; preds = %if.then, %entry 21 ret ptr %call 22 23; CHECK-LABEL: @test1( 24; CHECK-NOT: load 25; CHECK-NOT: icmp 26 27; CHECK_NO_LIBCALLS-LABEL: @test1( 28; CHECK_NO_LIBCALLS: load 29; CHECK_NO_LIBCALLS: icmp 30} 31 32declare noalias ptr @_Znwm(i64) nounwind 33 34define noalias ptr @test2() nounwind uwtable ssp { 35entry: 36 %call = tail call ptr @_Znwm(i64 100) nounwind 37 %0 = load i8, ptr %call, align 1 38 %tobool = icmp eq i8 %0, 0 39 br i1 %tobool, label %if.end, label %if.then 40 41if.then: ; preds = %entry 42 store i8 0, ptr %call, align 1 43 br label %if.end 44 45if.end: ; preds = %if.then, %entry 46 ret ptr %call 47 48; CHECK-LABEL: @test2( 49; CHECK-NOT: load 50; CHECK-NOT: icmp 51 52; CHECK_NO_LIBCALLS-LABEL: @test2( 53; CHECK_NO_LIBCALLS: load 54; CHECK_NO_LIBCALLS: icmp 55} 56 57declare noalias ptr @aligned_alloc(i64 allocalign, i64) nounwind allockind("alloc,uninitialized,aligned") allocsize(1) 58 59define noalias ptr @test3() nounwind uwtable ssp { 60entry: 61 %call = tail call ptr @aligned_alloc(i64 256, i64 32) nounwind 62 %0 = load i8, ptr %call, align 32 63 %tobool = icmp eq i8 %0, 0 64 br i1 %tobool, label %if.end, label %if.then 65 66if.then: ; preds = %entry 67 store i8 0, ptr %call, align 1 68 br label %if.end 69 70if.end: ; preds = %if.then, %entry 71 ret ptr %call 72 73; CHECK-LABEL: @test3( 74; CHECK-NOT: load 75; CHECK-NOT: icmp 76 77; CHECK_NO_LIBCALLS-LABEL: @test3( 78; CHECK_NO_LIBCALLS: load 79; CHECK_NO_LIBCALLS: icmp 80} 81