blob: e61f50c7603e7fc9576c23514860117be519a5ea [file] [log] [blame]
Chris Lattner38dfe1c2009-10-27 05:39:41 +00001; RUN: opt < %s -inline -scalarrepl -S | FileCheck %s
Dan Gohmanf17a25c2007-07-18 16:29:46 +00002
Chris Lattner468f7292009-10-27 05:35:35 +00003define i32 @test1f(i32 %i) {
Tanya Lattner4c4d0b82008-03-01 09:15:35 +00004 ret i32 %i
Dan Gohmanf17a25c2007-07-18 16:29:46 +00005}
6
Chris Lattner468f7292009-10-27 05:35:35 +00007define i32 @test1(i32 %W) {
8 %X = call i32 @test1f(i32 7)
9 %Y = add i32 %X, %W
Tanya Lattner4c4d0b82008-03-01 09:15:35 +000010 ret i32 %Y
Chris Lattner468f7292009-10-27 05:35:35 +000011; CHECK: @test1(
12; CHECK-NEXT: %Y = add i32 7, %W
13; CHECK-NEXT: ret i32 %Y
Dan Gohmanf17a25c2007-07-18 16:29:46 +000014}
Tanya Lattner4c4d0b82008-03-01 09:15:35 +000015
Chris Lattner38dfe1c2009-10-27 05:39:41 +000016
17
18; rdar://7339069
19
20%T = type { i32, i32 }
21
22; CHECK-NOT: @test2f
23define internal %T* @test2f(i1 %cond, %T* %P) {
24 br i1 %cond, label %T, label %F
25
26T:
27 %A = getelementptr %T* %P, i32 0, i32 0
28 store i32 42, i32* %A
29 ret %T* %P
30
31F:
32 ret %T* %P
33}
34
35define i32 @test2(i1 %cond) {
36 %A = alloca %T
37
38 %B = call %T* @test2f(i1 %cond, %T* %A)
39 %C = getelementptr %T* %B, i32 0, i32 0
40 %D = load i32* %C
41 ret i32 %D
42
43; CHECK: @test2(
44; CHECK-NOT: = alloca
45; CHECK: ret i32 42
46}