summaryrefslogtreecommitdiff
path: root/test/CodeGen/ARM/2010-11-29-PrologueBug.ll
blob: e3c18cefd51df7d0197a9a5d1280100f0b02714d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
; RUN: llc < %s -mtriple=armv7-apple-darwin   | FileCheck %s --check-prefix=ARM
; RUN: llc < %s -mtriple=thumbv7-apple-darwin | FileCheck %s --check-prefix=THUMB2
; rdar://8690640

define i32* @t(i32* %x) nounwind {
entry:
; ARM: t:
; ARM: push
; ARM: mov r7, sp
; ARM: bl _foo
; ARM: bl _foo
; ARM: bl _foo
; ARM: pop {r7, pc}

; THUMB2: t:
; THUMB2: push
; THUMB2: mov r7, sp
; THUMB2: blx _foo
; THUMB2: blx _foo
; THUMB2: blx _foo
; THUMB2: pop
  %0 = tail call i32* @foo(i32* %x) nounwind
  %1 = tail call i32* @foo(i32* %0) nounwind
  %2 = tail call i32* @foo(i32* %1) nounwind
  ret i32* %2
}

declare i32* @foo(i32*)