[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / Transforms / NewGVN / malloc-load-removal.ll
blob72f4839a5545dd4020902cc8a75bbf7b2538fdd6
1 ; RUN: opt -S -basicaa -newgvn < %s | FileCheck %s
2 ; RUN: opt -S -basicaa -newgvn -disable-simplify-libcalls < %s | FileCheck %s -check-prefix=CHECK_NO_LIBCALLS
3 ; PR13694
5 target 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"
6 target triple = "x86_64-apple-macosx10.8.0"
8 declare i8* @malloc(i64) nounwind
10 define noalias i8* @test1() nounwind uwtable ssp {
11 entry:
12   %call = tail call i8* @malloc(i64 100) nounwind
13   %0 = load i8, i8* %call, align 1
14   %tobool = icmp eq i8 %0, 0
15   br i1 %tobool, label %if.end, label %if.then
17 if.then:                                          ; preds = %entry
18   store i8 0, i8* %call, align 1
19   br label %if.end
21 if.end:                                           ; preds = %if.then, %entry
22   ret i8* %call
24 ; CHECK-LABEL: @test1(
25 ; CHECK-NOT: load
26 ; CHECK-NOT: icmp
28 ; CHECK_NO_LIBCALLS-LABEL: @test1(
29 ; CHECK_NO_LIBCALLS: load
30 ; CHECK_NO_LIBCALLS: icmp
33 declare i8* @_Znwm(i64) nounwind
35 define noalias i8* @test2() nounwind uwtable ssp {
36 entry:
37   %call = tail call i8* @_Znwm(i64 100) nounwind
38   %0 = load i8, i8* %call, align 1
39   %tobool = icmp eq i8 %0, 0
40   br i1 %tobool, label %if.end, label %if.then
42 if.then:                                          ; preds = %entry
43   store i8 0, i8* %call, align 1
44   br label %if.end
46 if.end:                                           ; preds = %if.then, %entry
47   ret i8* %call
49 ; CHECK-LABEL: @test2(
50 ; CHECK-NOT: load
51 ; CHECK-NOT: icmp
53 ; CHECK_NO_LIBCALLS-LABEL: @test2(
54 ; CHECK_NO_LIBCALLS: load
55 ; CHECK_NO_LIBCALLS: icmp