blob: f550c8349f84aa4216ef5705ef8865b77963ff3a [file] [log] [blame]
John Criswell57886cb2003-07-21 19:41:51 +00001;
2; Test: ExternalConstant
3;
4; Description:
5; This regression test helps check whether the instruction combining
6; optimization pass correctly handles global variables which are marked
7; as external and constant.
8;
9; If a problem occurs, we should die on an assert(). Otherwise, we
10; should pass through the optimizer without failure.
11;
12; Extra code:
Dan Gohman18800922009-09-11 18:01:28 +000013; RUN: opt < %s -instcombine
Tanya Lattneraa6f5c92008-03-09 08:16:40 +000014; END.
John Criswell57886cb2003-07-21 19:41:51 +000015
Tanya Lattner5640bd12008-03-01 09:15:35 +000016target datalayout = "e-p:32:32"
17@silly = external constant i32 ; <i32*> [#uses=1]
John Criswell57886cb2003-07-21 19:41:51 +000018
Tanya Lattner5640bd12008-03-01 09:15:35 +000019declare void @bzero(i8*, i32)
John Criswell57886cb2003-07-21 19:41:51 +000020
Tanya Lattner5640bd12008-03-01 09:15:35 +000021declare void @bcopy(i8*, i8*, i32)
John Criswell57886cb2003-07-21 19:41:51 +000022
Tanya Lattner5640bd12008-03-01 09:15:35 +000023declare i32 @bcmp(i8*, i8*, i32)
John Criswell57886cb2003-07-21 19:41:51 +000024
Tanya Lattner5640bd12008-03-01 09:15:35 +000025declare i32 @fputs(i8*, i8*)
John Criswell57886cb2003-07-21 19:41:51 +000026
Tanya Lattner5640bd12008-03-01 09:15:35 +000027declare i32 @fputs_unlocked(i8*, i8*)
John Criswell57886cb2003-07-21 19:41:51 +000028
Tanya Lattner5640bd12008-03-01 09:15:35 +000029define i32 @function(i32 %a.1) {
30entry:
31 %a.0 = alloca i32 ; <i32*> [#uses=2]
32 %result = alloca i32 ; <i32*> [#uses=2]
33 store i32 %a.1, i32* %a.0
34 %tmp.0 = load i32* %a.0 ; <i32> [#uses=1]
35 %tmp.1 = load i32* @silly ; <i32> [#uses=1]
36 %tmp.2 = add i32 %tmp.0, %tmp.1 ; <i32> [#uses=1]
37 store i32 %tmp.2, i32* %result
38 br label %return
John Criswell57886cb2003-07-21 19:41:51 +000039
Tanya Lattner5640bd12008-03-01 09:15:35 +000040return: ; preds = %entry
41 %tmp.3 = load i32* %result ; <i32> [#uses=1]
42 ret i32 %tmp.3
John Criswell57886cb2003-07-21 19:41:51 +000043}
Tanya Lattner5640bd12008-03-01 09:15:35 +000044