; Test that the StrChrOptimizer works correctly
-; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | not grep 'call.*%strchr'
+; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \
+; RUN: not grep {call.*@strchr}
-declare sbyte* %strchr(sbyte*,int)
-declare int %puts(sbyte*)
-%hello = constant [14 x sbyte] c"hello world\n\00"
-%null = constant [1 x sbyte] c"\00"
+@hello = constant [14 x i8] c"hello world\5Cn\00" ; <[14 x i8]*> [#uses=1]
+@null = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=1]
-implementation ; Functions:
+declare i8* @strchr(i8*, i32)
-int %main () {
- %hello_p = getelementptr [14 x sbyte]* %hello, int 0, int 0
- %null_p = getelementptr [1 x sbyte]* %null, int 0, int 0
+declare i32 @puts(i8*)
- %world = call sbyte* %strchr(sbyte* %hello_p, int 119 )
- %ignore = call sbyte* %strchr(sbyte* %null_p, int 119 )
- %len = call int %puts(sbyte* %world)
- %index = add int %len, 112
- %result = call sbyte* %strchr(sbyte* %hello_p, int %index)
- ret int %index
+define i32 @main() {
+ %hello_p = getelementptr [14 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=2]
+ %null_p = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=1]
+ %world = call i8* @strchr( i8* %hello_p, i32 119 ) ; <i8*> [#uses=1]
+ %ignore = call i8* @strchr( i8* %null_p, i32 119 ) ; <i8*> [#uses=0]
+ %len = call i32 @puts( i8* %world ) ; <i32> [#uses=1]
+ %index = add i32 %len, 112 ; <i32> [#uses=2]
+ %result = call i8* @strchr( i8* %hello_p, i32 %index ) ; <i8*> [#uses=0]
+ ret i32 %index
}
+