This commit introduces two fake instructions MORESTACK_RET and

MORESTACK_RET_RESTORE_R10; which are lowered to a RET and a RET
followed by a MOV respectively.  Having a fake instruction prevents
the verifier from seeing a MachineBasicBlock end with a
non-terminator (MOV).  It also prevents the rather eccentric case of a
MachineBasicBlock ending with RET but having successors nevertheless.

Patch by Sanjoy Das.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143062 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2011-10-26 21:12:27 +00:00
parent 75757f9fd1
commit e840e88239
4 changed files with 41 additions and 23 deletions

View File

@@ -82,6 +82,6 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) {
; X64-NEXT: movabsq $0, %r11
; X64-NEXT: callq __morestack
; X64-NEXT: ret
; X64: movq %rax, %r10
; X64-NEXT: movq %rax, %r10
}