blob: 609a3d4e153e9a7e63881dff689719fb98be28e0 [file] [log] [blame]
Chris Lattnerc581acb2009-10-27 05:39:41 +00001; RUN: opt < %s -inline -scalarrepl -S | FileCheck %s
Kenneth Uildriksb908f8a2009-11-03 15:29:06 +00002target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
Chris Lattnerf4976402002-06-24 17:46:05 +00003
Chris Lattner744f19a2009-10-27 05:35:35 +00004define i32 @test1f(i32 %i) {
Tanya Lattnerec9a35a2008-03-01 09:15:35 +00005 ret i32 %i
Chris Lattnerf4976402002-06-24 17:46:05 +00006}
7
Chris Lattner744f19a2009-10-27 05:35:35 +00008define i32 @test1(i32 %W) {
9 %X = call i32 @test1f(i32 7)
10 %Y = add i32 %X, %W
Tanya Lattnerec9a35a2008-03-01 09:15:35 +000011 ret i32 %Y
Chris Lattner744f19a2009-10-27 05:35:35 +000012; CHECK: @test1(
13; CHECK-NEXT: %Y = add i32 7, %W
14; CHECK-NEXT: ret i32 %Y
Chris Lattnerf4976402002-06-24 17:46:05 +000015}
Tanya Lattnerec9a35a2008-03-01 09:15:35 +000016
Chris Lattnerc581acb2009-10-27 05:39:41 +000017
18
19; rdar://7339069
20
21%T = type { i32, i32 }
22
23; CHECK-NOT: @test2f
24define internal %T* @test2f(i1 %cond, %T* %P) {
25 br i1 %cond, label %T, label %F
26
27T:
28 %A = getelementptr %T* %P, i32 0, i32 0
29 store i32 42, i32* %A
30 ret %T* %P
31
32F:
33 ret %T* %P
34}
35
36define i32 @test2(i1 %cond) {
37 %A = alloca %T
38
39 %B = call %T* @test2f(i1 %cond, %T* %A)
40 %C = getelementptr %T* %B, i32 0, i32 0
41 %D = load i32* %C
42 ret i32 %D
43
44; CHECK: @test2(
45; CHECK-NOT: = alloca
Chris Lattnerbdb6b7f2011-01-14 07:46:33 +000046; CHECK: ret i32
Chris Lattnerc581acb2009-10-27 05:39:41 +000047}