Add constant support to object size handling and remove default
[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 declare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly