[llvm-commits] [llvm] r134268 - in /llvm/trunk: lib/Analysis/IVUsers.cpp test/CodeGen/X86/lsr-nonaffine.ll
Francois Pichet
pichet2000 at gmail.com
Tue Jul 5 14:08:26 PDT 2011
On Fri, Jul 1, 2011 at 11:52 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
>
> On Jul 1, 2011, at 8:17 PM, Francois Pichet wrote:
>
> +; CHECK: xorl %eax, %eax
>
> +; CHECK-NEXT: align
>
> +; CHECK-NEXT: BB0_1:
>
> +; CHECK-NEXT: movq %rax, (%rdx)
>
> +; CHECK-NEXT: addq %rsi, %rax
>
> +; CHECK-NEXT: cmpq %rdi, %rax
>
> +; CHECK-NEXT: jl
>
> +; CHECK-NEXT: imulq %rax, %rax
>
> +; CHECK-NEXT: ret
>
> This fails under MSVC:
> The output is instead:
> foo:
> xorl %eax, %eax
> .align 16, 0x90
> .LBB0_1:
> movq %rax, (%r8)
> addq %rdx, %rax
> cmpq %rcx, %rax
> jl .LBB0_1
> imulq %rax, %rax
> ret
>
> Any idea?
>
> Unit tests should only mention explicit registers when a specific register
> is required for correctness.
> Otherwise, use FileCheck variables.
> One of these days, I am going to add -regalloc=random…
> /jakob
>
Interesting! I know close to nothing about register allocation
algorithms but I am curious to know where does that nondeterminism
comes from?
More information about the llvm-commits
mailing list