Chris Lattner | 1913c11 | 2003-08-04 02:11:05 +0000 | [diff] [blame] | 1 | ; The old instruction selector used to load all arguments to a call up in |
| 2 | ; registers, then start pushing them all onto the stack. This is bad news as |
| 3 | ; it makes a ton of annoying overlapping live ranges. This code should not |
| 4 | ; cause spills! |
| 5 | ; |
Chandler Carruth | 49589f0 | 2012-07-02 18:37:59 +0000 | [diff] [blame] | 6 | ; RUN: llc < %s -march=x86 -stats 2>&1 | not grep spilled |
Chris Lattner | 1913c11 | 2003-08-04 02:11:05 +0000 | [diff] [blame] | 7 | |
Tanya Lattner | 6f729d6 | 2008-03-25 04:26:08 +0000 | [diff] [blame] | 8 | target datalayout = "e-p:32:32" |
Chris Lattner | 1913c11 | 2003-08-04 02:11:05 +0000 | [diff] [blame] | 9 | |
Tanya Lattner | 6f729d6 | 2008-03-25 04:26:08 +0000 | [diff] [blame] | 10 | define i32 @test(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) { |
| 11 | ret i32 0 |
Chris Lattner | 1913c11 | 2003-08-04 02:11:05 +0000 | [diff] [blame] | 12 | } |
Tanya Lattner | 6f729d6 | 2008-03-25 04:26:08 +0000 | [diff] [blame] | 13 | |
| 14 | define i32 @main() { |
| 15 | %X = call i32 @test( i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10 ) ; <i32> [#uses=1] |
| 16 | ret i32 %X |
| 17 | } |
| 18 | |