Chandler Carruth | 102fa92 | 2017-02-08 08:04:02 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -argpromotion -S | FileCheck %s |
Chandler Carruth | addcda4 | 2017-02-09 23:46:27 +0000 | [diff] [blame] | 2 | ; RUN: opt < %s -passes=argpromotion -S | FileCheck %s |
Chris Lattner | 70496c1 | 2004-11-13 23:28:39 +0000 | [diff] [blame] | 3 | |
Chandler Carruth | 044d1e0 | 2017-02-06 08:43:11 +0000 | [diff] [blame] | 4 | ; Don't promote around control flow. |
Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 5 | define internal i32 @callee(i1 %C, i32* %P) { |
Chandler Carruth | 044d1e0 | 2017-02-06 08:43:11 +0000 | [diff] [blame] | 6 | ; CHECK-LABEL: define internal i32 @callee( |
| 7 | ; CHECK: i1 %C, i32* %P) |
| 8 | entry: |
| 9 | br i1 %C, label %T, label %F |
Chris Lattner | 70496c1 | 2004-11-13 23:28:39 +0000 | [diff] [blame] | 10 | |
Chandler Carruth | 044d1e0 | 2017-02-06 08:43:11 +0000 | [diff] [blame] | 11 | T: |
| 12 | ret i32 17 |
Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 13 | |
Chandler Carruth | 044d1e0 | 2017-02-06 08:43:11 +0000 | [diff] [blame] | 14 | F: |
| 15 | %X = load i32, i32* %P |
| 16 | ret i32 %X |
Chris Lattner | 70496c1 | 2004-11-13 23:28:39 +0000 | [diff] [blame] | 17 | } |
| 18 | |
Tanya Lattner | 5640bd1 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 19 | define i32 @foo() { |
Chandler Carruth | 044d1e0 | 2017-02-06 08:43:11 +0000 | [diff] [blame] | 20 | ; CHECK-LABEL: define i32 @foo( |
| 21 | entry: |
| 22 | ; CHECK-NOT: load i32, i32* null |
| 23 | %X = call i32 @callee(i1 true, i32* null) |
| 24 | ; CHECK: call i32 @callee(i1 true, i32* null) |
| 25 | ret i32 %X |
Chris Lattner | 70496c1 | 2004-11-13 23:28:39 +0000 | [diff] [blame] | 26 | } |
| 27 | |