1; RUN: opt -S -passes=newgvn < %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 i8* @malloc(i64) nounwind allockind("alloc,uninitialized") allocsize(0) "alloc-family"="malloc" 8 9define noalias i8* @test1() nounwind uwtable ssp { 10entry: 11 %call = tail call i8* @malloc(i64 100) nounwind 12 %0 = load i8, i8* %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, i8* %call, align 1 18 br label %if.end 19 20if.end: ; preds = %if.then, %entry 21 ret i8* %call 22 23; CHECK-LABEL: @test1( 24; CHECK-NOT: load 25; CHECK-NOT: icmp 26} 27 28declare i8* @_Znwm(i64) nounwind 29 30define noalias i8* @test2() nounwind uwtable ssp { 31entry: 32 %call = tail call i8* @_Znwm(i64 100) nounwind 33 %0 = load i8, i8* %call, align 1 34 %tobool = icmp eq i8 %0, 0 35 br i1 %tobool, label %if.end, label %if.then 36 37if.then: ; preds = %entry 38 store i8 0, i8* %call, align 1 39 br label %if.end 40 41if.end: ; preds = %if.then, %entry 42 ret i8* %call 43 44; CHECK-LABEL: @test2( 45; CHECK-NOT: load 46; CHECK-NOT: icmp 47} 48 49declare i8* @aligned_alloc(i64 allocalign, i64) nounwind allockind("alloc,uninitialized,aligned") allocsize(1) "alloc-family"="malloc" 50 51define noalias i8* @test3() nounwind uwtable ssp { 52entry: 53 %call = tail call i8* @aligned_alloc(i64 256, i64 32) nounwind 54 %0 = load i8, i8* %call, align 32 55 %tobool = icmp eq i8 %0, 0 56 br i1 %tobool, label %if.end, label %if.then 57 58if.then: ; preds = %entry 59 store i8 0, i8* %call, align 1 60 br label %if.end 61 62if.end: ; preds = %if.then, %entry 63 ret i8* %call 64 65; CHECK-LABEL: @test3( 66; CHECK-NOT: load 67; CHECK-NOT: icmp 68} 69