Temporarily revert this since it appears to have caused a build
[oota-llvm.git] / test / Transforms / InstCombine / objsize.ll
1 ; RUN: opt < %s -instcombine -S | FileCheck %s
2 @a = common global [60 x i8] zeroinitializer, align 1 ; <[60 x i8]*>
3 @.str = private constant [8 x i8] c"abcdefg\00"   ; <[8 x i8]*>
4
5 define i32 @foo() nounwind {
6 ; CHECK: @foo
7 ; CHECK-NEXT: ret i32 60
8   %1 = call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([60 x i8]* @a, i32 0, i32 0), i1 false)
9   ret i32 %1
10 }
11
12 define i8* @bar() nounwind {
13 ; CHECK: @bar
14 entry:
15   %retval = alloca i8*
16   %0 = call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([60 x i8]* @a, i32 0, i32 0), i1 false)
17   %cmp = icmp ne i32 %0, -1
18 ; CHECK: br i1 true
19   br i1 %cmp, label %cond.true, label %cond.false
20
21 cond.true:
22   %1 = load i8** %retval;
23   ret i8* %1;
24
25 cond.false:
26   %2 = load i8** %retval;
27   ret i8* %2;
28 }
29
30 @window = external global [0 x i8]
31
32 define i1 @baz() nounwind {
33 ; CHECK: @baz
34 ; CHECK-NEXT: llvm.objectsize.i32
35   %1 = tail call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([0 x i8]* @window, i32 0, i32 0), i1 false)
36   %2 = icmp eq i32 %1, -1
37   ret i1 %2
38 }
39
40
41 declare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly