[llvm-dev] Clang Optimizer freaks out on "simple" goto code?

Stephen Checkoway via llvm-dev llvm-dev at lists.llvm.org
Mon Dec 5 09:06:03 PST 2016


> On Dec 5, 2016, at 06:08, Philip Pfaffe via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> While Clang's code is significantly larger,  that is probably on purpose: Clang has vectorized the goto-loop.

Even with -mno-sse (and I suspect there's a better way to inhibit vectorization, but this worked), it looks like Clang is doing something a little strange. Where gcc uses

.L7:
	add	eax, edi
	sub	edi, 1;
	jne	.L7,

Clang has

.LBB0_2:
	add	eax, edi
	cmp	edi, 1
	lea	ecx, [rdi - 1]
	mov	edi, ecx
	jg	.LBB0_2

It also has a redundant xor eax, eax before the loop for some reason. That said...

> To validate whether that was correct and a good idea, plug both results into a benchmark and look at the actual performance data.

I didn't actually do this.

-- 
Stephen Checkoway







More information about the llvm-dev mailing list