1
; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin9 -regalloc=local | FileCheck %s
2
; RUN: llc -O0 < %s -march=x86 -mtriple=i386-apple-darwin9 -regalloc=local | FileCheck %s
3
; CHECKed instructions should be the same with or without -O0.
5
@.str = private constant [12 x i8] c"x + y = %i\0A\00", align 1 ; <[12 x i8]*> [#uses=1]
7
define i32 @main() nounwind {
9
; CHECK: movl 24(%esp), %eax
11
; CHECK: movl %eax, 36(%esp)
13
; CHECK: movl 28(%esp), %ebx
15
; CHECK: movl %ebx, 40(%esp)
17
; CHECK: addl %ebx, %eax
18
%retval = alloca i32 ; <i32*> [#uses=2]
19
%"%ebx" = alloca i32 ; <i32*> [#uses=1]
20
%"%eax" = alloca i32 ; <i32*> [#uses=2]
21
%result = alloca i32 ; <i32*> [#uses=2]
22
%y = alloca i32 ; <i32*> [#uses=2]
23
%x = alloca i32 ; <i32*> [#uses=2]
24
%0 = alloca i32 ; <i32*> [#uses=2]
25
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
26
store i32 1, i32* %x, align 4
27
store i32 2, i32* %y, align 4
28
call void asm sideeffect alignstack "# top of block", "~{dirflag},~{fpsr},~{flags},~{edi},~{esi},~{edx},~{ecx},~{eax}"() nounwind
29
%asmtmp = call i32 asm sideeffect alignstack "movl $1, $0", "=={eax},*m,~{dirflag},~{fpsr},~{flags},~{memory}"(i32* %x) nounwind ; <i32> [#uses=1]
30
store i32 %asmtmp, i32* %"%eax"
31
%asmtmp1 = call i32 asm sideeffect alignstack "movl $1, $0", "=={ebx},*m,~{dirflag},~{fpsr},~{flags},~{memory}"(i32* %y) nounwind ; <i32> [#uses=1]
32
store i32 %asmtmp1, i32* %"%ebx"
33
%1 = call i32 asm "", "={bx}"() nounwind ; <i32> [#uses=1]
34
%2 = call i32 asm "", "={ax}"() nounwind ; <i32> [#uses=1]
35
%asmtmp2 = call i32 asm sideeffect alignstack "addl $1, $0", "=={eax},{ebx},{eax},~{dirflag},~{fpsr},~{flags},~{memory}"(i32 %1, i32 %2) nounwind ; <i32> [#uses=1]
36
store i32 %asmtmp2, i32* %"%eax"
37
%3 = call i32 asm "", "={ax}"() nounwind ; <i32> [#uses=1]
38
call void asm sideeffect alignstack "movl $0, $1", "{eax},*m,~{dirflag},~{fpsr},~{flags},~{memory}"(i32 %3, i32* %result) nounwind
39
%4 = load i32* %result, align 4 ; <i32> [#uses=1]
40
%5 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([12 x i8]* @.str, i32 0, i32 0), i32 %4) nounwind ; <i32> [#uses=0]
41
store i32 0, i32* %0, align 4
42
%6 = load i32* %0, align 4 ; <i32> [#uses=1]
43
store i32 %6, i32* %retval, align 4
46
return: ; preds = %entry
47
%retval3 = load i32* %retval ; <i32> [#uses=1]
51
declare i32 @printf(i8*, ...) nounwind