| Venkatraman Govindaraju | 3b71b0a | 2011-01-12 03:18:21 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=sparc -O0 <%s | 
| Venkatraman Govindaraju | 8812485 | 2013-10-09 12:50:39 +0000 | [diff] [blame] | 2 | ; RUN: llc -march=sparc   <%s | FileCheck %s --check-prefix=V8 | 
|  | 3 | ; RUN: llc -march=sparcv9 <%s | FileCheck %s --check-prefix=V9 | 
|  | 4 |  | 
|  | 5 | ; V8-LABEL: test | 
|  | 6 | ; V8:       save %sp | 
|  | 7 | ; V8:       call foo | 
|  | 8 | ; V8-NEXT:  nop | 
|  | 9 | ; V8:       call bar | 
|  | 10 | ; V8-NEXT:  nop | 
| Venkatraman Govindaraju | ad40dfc | 2014-01-10 02:55:27 +0000 | [diff] [blame] | 11 | ; V8:       ret | 
| Venkatraman Govindaraju | 8812485 | 2013-10-09 12:50:39 +0000 | [diff] [blame] | 12 | ; V8-NEXT:  restore | 
|  | 13 |  | 
|  | 14 | ; V9-LABEL: test | 
|  | 15 | ; V9:       save %sp | 
|  | 16 | ; V9:       call foo | 
|  | 17 | ; V9-NEXT:  nop | 
|  | 18 | ; V9:       call bar | 
|  | 19 | ; V9-NEXT:  nop | 
| Venkatraman Govindaraju | ad40dfc | 2014-01-10 02:55:27 +0000 | [diff] [blame] | 20 | ; V9:       ret | 
| Venkatraman Govindaraju | 8812485 | 2013-10-09 12:50:39 +0000 | [diff] [blame] | 21 | ; V9-NEXT:  restore | 
| Venkatraman Govindaraju | 3b71b0a | 2011-01-12 03:18:21 +0000 | [diff] [blame] | 22 |  | 
|  | 23 | define void @test() nounwind { | 
|  | 24 | entry: | 
| David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame^] | 25 | %0 = tail call i32 (...) @foo() nounwind | 
|  | 26 | tail call void (...) @bar() nounwind | 
| Venkatraman Govindaraju | 3b71b0a | 2011-01-12 03:18:21 +0000 | [diff] [blame] | 27 | ret void | 
|  | 28 | } | 
|  | 29 |  | 
|  | 30 | declare i32 @foo(...) | 
|  | 31 |  | 
|  | 32 | declare void @bar(...) | 
|  | 33 |  | 
| Venkatraman Govindaraju | 8812485 | 2013-10-09 12:50:39 +0000 | [diff] [blame] | 34 |  | 
|  | 35 | ; V8-LABEL: test_tail_call_with_return | 
|  | 36 | ; V8:       save %sp | 
|  | 37 | ; V8:       call foo | 
|  | 38 | ; V8-NEXT:  nop | 
| Venkatraman Govindaraju | ad40dfc | 2014-01-10 02:55:27 +0000 | [diff] [blame] | 39 | ; V8:       ret | 
| Venkatraman Govindaraju | 8812485 | 2013-10-09 12:50:39 +0000 | [diff] [blame] | 40 | ; V8-NEXT:  restore %g0, %o0, %o0 | 
|  | 41 |  | 
|  | 42 | ; V9-LABEL: test_tail_call_with_return | 
|  | 43 | ; V9:       save %sp | 
|  | 44 | ; V9:       call foo | 
|  | 45 | ; V9-NEXT:  nop | 
| Venkatraman Govindaraju | ad40dfc | 2014-01-10 02:55:27 +0000 | [diff] [blame] | 46 | ; V9:       ret | 
| Venkatraman Govindaraju | 8812485 | 2013-10-09 12:50:39 +0000 | [diff] [blame] | 47 | ; V9-NEXT:  restore %g0, %o0, %o0 | 
|  | 48 |  | 
|  | 49 | define i32 @test_tail_call_with_return() nounwind { | 
|  | 50 | entry: | 
| David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame^] | 51 | %0 = tail call i32 (...) @foo() nounwind | 
| Venkatraman Govindaraju | 8812485 | 2013-10-09 12:50:39 +0000 | [diff] [blame] | 52 | ret i32 %0 | 
|  | 53 | } |