1 #include "tests/asm.h" 2 3 .version "01.01" 4 gcc2_compiled.: 5 .text 6 .align 4 7 .globl VG_SYM_ASM(fooble) 8 #if defined(VGO_linux) 9 .type VG_SYM_ASM(fooble),@function 10 #endif 11 VG_SYM_ASM(fooble): 12 pushl %ebp 13 movl %esp, %ebp 14 movl 8(%ebp), %eax 15 16 subl 12(%ebp), %eax 17 # flags are now undef if either operand is 18 # save possibly undef flags on stack 19 pushfl 20 21 movl $0, %eax 22 addl $0, %eax 23 # flags are now definitely defined 24 25 popfl 26 # resulting flag definedness depends on outcome of sub above 27 # should override that created by 0 + 0 above 28 # because Vex does an emulation-warning check on the popfl, 29 # an error should be reported for the popfl 30 31 # now use the condition codes to generate a value 32 # in a way which will cause undefinedness to get reported 33 # (a second time) 34 jz labelz 35 movl $22, %eax 36 jmp theend 37 labelz: 38 movl $33, %eax 39 theend: 40 popl %ebp 41 ret 42 .Lfe1: 43 #if defined(VGO_linux) 44 .size VG_SYM_ASM(fooble),.Lfe1-VG_SYM_ASM(fooble) 45 #endif 46 .ident "GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)" 47