volatile: movl i(%rip), %ecx movl j(%rip), %eax xorl %edx, %edx movl $.LC0, %edi testl %eax, %eax setne %dl xorl %esi, %esi testl %ecx, %ecx setne %sil xorl %eax, %eax call printf xorl %eax, %eax addq $8, %rsp ret non-volatile: xorl %edx, %edx cmpl $0, j(%rip) movl $.LC0, %edi setne %dl xorl %esi, %esi cmpl $0, i(%rip) setne %sil xorl %eax, %eax call printf xorl %eax, %eax addq $8, %rsp ret non-volatile, i,j in main(): xorl %edx, %edx testl %eax, %eax setne %dl movl $.LC0, %edi xorl %eax, %eax movl %edx, %esi call printf xorl %eax, %eax addq $8, %rsp ret non-volatile, i=0,j=0 in main(): xorl %edx, %edx xorl %esi, %esi movl $.LC0, %edi xorl %eax, %eax call printf xorl %eax, %eax addq $8, %rsp ret