[PATCH] D11377: x86: check hasOpaqueSPAdjustment in canRealignStack

JF Bastien jfb at chromium.org
Mon Jul 20 17:12:48 PDT 2015

jfb added a comment.

I'm not sure how to test this. I tried something similar to `test/CodeGen/X86/inline-asm-stack-realign3.ll` but without success:

  ; RUN: llc -march=x86 -no-integrated-as < %s | FileCheck %s
  declare void @bar(i32* %junk)
  define i32 @foo(i1 %cond) {
    %r = alloca i32, align 128
    store i32 -1, i32* %r, align 128
    br i1 %cond, label %doit, label %skip
    call void asm sideeffect "xor %esi, %esi\0A\09mov %esi, $0", "=*m,~{esi},~{flags}"(i32* %r)
    %junk = alloca i32
    call void @bar(i32* %junk)
    br label %skip
    %0 = load i32, i32* %r, align 128
    ret i32 %0

This generates the following code:

  _foo:                                   # @foo
  # BB#0:                                 # %entry
  	pushl	%ebp
  	movl	%esp, %ebp
  	pushl	%esi
  	andl	$-128, %esp
  	subl	$128, %esp
  	movl	%esp, %esi
  	movl	$-1, (%esi)
  	testb	$1, 8(%ebp)
  	je	LBB0_2
  # BB#1:                                 # %doit
  	xorl	%esi, %esi
  	movl	%esi, (%esi)
  	movl	$4, %eax
  	calll	__chkstk
  	movl	%esp, %eax
  	pushl	%eax
  	calll	_bar
  	addl	$4, %esp
  LBB0_2:                                 # %skip
  	movl	(%esi), %eax
  	leal	-4(%ebp), %esp
  	popl	%esi
  	popl	%ebp

Which seems wrong, but is the same as before this patch, so I'm assuming it doesn't trigger my change. Any ideas on how to trigger the change?


More information about the llvm-commits mailing list