1 ; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin9 -regalloc=fast | FileCheck %s 2 ; RUN: llc -O0 < %s -march=x86 -mtriple=i386-apple-darwin9 -regalloc=fast | FileCheck %s 3 ; CHECKed instructions should be the same with or without -O0. 4 5 @.str = private constant [12 x i8] c"x + y = %i\0A\00", align 1 ; <[12 x i8]*> [#uses=1] 6 7 define i32 @main() nounwind { 8 entry: 9 ; CHECK: movl 24(%esp), %eax 10 ; CHECK-NOT: movl 11 ; CHECK: movl %eax, 36(%esp) 12 ; CHECK-NOT: movl 13 ; CHECK: movl 28(%esp), %ebx 14 ; CHECK-NOT: movl 15 ; CHECK: movl %ebx, 40(%esp) 16 ; CHECK-NOT: movl 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 44 br label %return 45 46 return: ; preds = %entry 47 %retval3 = load i32* %retval ; <i32> [#uses=1] 48 ret i32 %retval3 49 } 50 51 declare i32 @printf(i8*, ...) nounwind 52