summaryrefslogtreecommitdiff
path: root/test/Transforms/InstCombine/2003-07-21-ExternalConstant.ll
blob: a98a68ef1f967e36aa7991901cadb6dac38138a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
;
; Test: ExternalConstant
;
; Description:
;	This regression test helps check whether the instruction combining
;	optimization pass correctly handles global variables which are marked
;	as external and constant.
;
;	If a problem occurs, we should die on an assert().  Otherwise, we
;	should pass through the optimizer without failure.
;
; Extra code:
; RUN: as < %s | opt -instcombine
;

target endian = little
target pointersize = 32
%silly = external constant int		; <int*> [#uses=1]

implementation   ; Functions:

declare void %bzero(sbyte*, uint)

declare void %bcopy(sbyte*, sbyte*, uint)

declare int %bcmp(sbyte*, sbyte*, uint)

declare int %fputs(sbyte*, sbyte*)

declare int %fputs_unlocked(sbyte*, sbyte*)

int %function(int %a.1) {
entry:		; No predecessors!
	%a.0 = alloca int		; <int*> [#uses=2]
	%result = alloca int		; <int*> [#uses=2]
	store int %a.1, int* %a.0
	%tmp.0 = load int* %a.0		; <int> [#uses=1]
	%tmp.1 = load int* %silly		; <int> [#uses=1]
	%tmp.2 = add int %tmp.0, %tmp.1		; <int> [#uses=1]
	store int %tmp.2, int* %result
	br label %return

return:		; preds = %entry
	%tmp.3 = load int* %result		; <int> [#uses=1]
	ret int %tmp.3
}