blob: c98e79ae554d700c41f8500a70eb94baaadb250c [file] [log] [blame]
Benjamin Kramer59e43bd2011-10-29 19:43:31 +00001; RUN: opt < %s -simplify-libcalls -S | FileCheck %s
Daniel Dunbar43186a42011-02-12 18:19:53 +00002
Chris Lattner9a34ecd2007-04-14 01:17:38 +00003@str = internal constant [13 x i8] c"hello world\0A\00" ; <[13 x i8]*> [#uses=1]
4@str1 = internal constant [2 x i8] c"h\00" ; <[2 x i8]*> [#uses=1]
5
Benjamin Kramer59e43bd2011-10-29 19:43:31 +00006; CHECK: internal unnamed_addr constant [12 x i8] c"hello world\00"
7
Daniel Dunbard02be242011-02-12 18:19:57 +00008declare i32 @printf(i8*, ...)
9
10; CHECK: define void @f0
11; CHECK-NOT: printf
12; CHECK: }
13define void @f0() {
Chris Lattner9a34ecd2007-04-14 01:17:38 +000014entry:
15 %tmp1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([13 x i8]* @str, i32 0, i32 0) ) ; <i32> [#uses=0]
16 ret void
17}
18
Daniel Dunbard02be242011-02-12 18:19:57 +000019; CHECK: define void @f1
20; CHECK-NOT: printf
21; CHECK: }
22define void @f1() {
Chris Lattner9a34ecd2007-04-14 01:17:38 +000023entry:
24 %tmp1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([2 x i8]* @str1, i32 0, i32 0) ) ; <i32> [#uses=0]
25 ret void
26}
27
Daniel Dunbard02be242011-02-12 18:19:57 +000028; Verify that we don't turn this into a putchar call (thus changing the return
29; value).
30;
31; CHECK: define i32 @f2
32; CHECK: printf
33; CHECK: }
34define i32 @f2() {
35 %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([2 x i8]* @str1, i32 0, i32 0))
36 ret i32 %call
37}