~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/CodeGen/X86/stackmap-shadow-optimization.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s
 
2
 
 
3
; Check that the X86 stackmap shadow optimization is only outputting a 3-byte
 
4
; nop here. 8-bytes are requested, but 5 are covered by the code for the call to
 
5
; bar.  However, the frame teardown and the return do not count towards the
 
6
; stackmap shadow as the call return counts as a branch target so must flush
 
7
; the shadow.
 
8
; Note that in order for a thread to not return in to the patched space
 
9
; the call must be at the end of the shadow, so the required nop must be
 
10
; before the call, not after.
 
11
define void @shadow_optimization_test() {
 
12
entry:
 
13
; CHECK-LABEL:  shadow_optimization_test:
 
14
; CHECK:        callq   _bar
 
15
; CHECK:        nop
 
16
; CHECK:        callq   _bar
 
17
; CHECK-NOT:    nop
 
18
; CHECK:        callq   _bar
 
19
; CHECK-NOT:    nop
 
20
  call void @bar()
 
21
  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 8)
 
22
  call void @bar()
 
23
  call void @bar()
 
24
  ret void
 
25
}
 
26
 
 
27
declare void @llvm.experimental.stackmap(i64, i32, ...)
 
28
declare void @bar()