This should always be signed chars, so use int8_t. This fixes a miscompile when
[llvm/stm8.git] / test / CodeGen / X86 / 2006-05-02-InstrSched1.ll
blob7d0a6ab0a04c2ee47df091667eb7917bc9f3af03
1 ; RUN: llc < %s -march=x86 -relocation-model=static -stats |& \
2 ; RUN:   grep asm-printer | grep 14
4 @size20 = external global i32           ; <i32*> [#uses=1]
5 @in5 = external global i8*              ; <i8**> [#uses=1]
7 define i32 @compare(i8* %a, i8* %b) nounwind {
8         %tmp = bitcast i8* %a to i32*           ; <i32*> [#uses=1]
9         %tmp1 = bitcast i8* %b to i32*          ; <i32*> [#uses=1]
10         %tmp.upgrd.1 = load i32* @size20                ; <i32> [#uses=1]
11         %tmp.upgrd.2 = load i8** @in5           ; <i8*> [#uses=2]
12         %tmp3 = load i32* %tmp1         ; <i32> [#uses=1]
13         %gep.upgrd.3 = zext i32 %tmp3 to i64            ; <i64> [#uses=1]
14         %tmp4 = getelementptr i8* %tmp.upgrd.2, i64 %gep.upgrd.3                ; <i8*> [#uses=2]
15         %tmp7 = load i32* %tmp          ; <i32> [#uses=1]
16         %gep.upgrd.4 = zext i32 %tmp7 to i64            ; <i64> [#uses=1]
17         %tmp8 = getelementptr i8* %tmp.upgrd.2, i64 %gep.upgrd.4                ; <i8*> [#uses=2]
18         %tmp.upgrd.5 = tail call i32 @memcmp( i8* %tmp8, i8* %tmp4, i32 %tmp.upgrd.1 )          ; <i32> [#uses=1]
19         ret i32 %tmp.upgrd.5
22 declare i32 @memcmp(i8*, i8*, i32)