aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/LevelRaise/2002-07-16-MissedRaise.ll
blob: 4aec440b94d1d0a434b73557aaedf6a079cff886 (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
; This case fails raise because the store requires that it's argument is of a 
; particular type, but the gep is unable to propogate types backwards through 
; it, because it doesn't know what type to ask it's operand to be.
;
; This could be fixed by making all stores add themselves to a list, and check
; their arguments are consistent AFTER all other values are propogated.

; RUN: if as < %s | opt -raise | dis | grep '= cast' 
; RUN: then exit 1
; RUN: else exit 0
; RUN: fi

        %Tree = type %struct.tree*
        %struct.tree = type { int, double, double, %Tree, %Tree, %Tree, %Tree }

void %reverse(%Tree %t) {
bb0:                                    ;[#uses=0]
        %cast219 = cast %Tree %t to sbyte***            ; <sbyte***> [#uses=2]
        %reg2221 = getelementptr sbyte*** %cast219, uint 6              ; <sbyte***> [#uses=1]
        %reg108 = load sbyte*** %reg2221                ; <sbyte**> [#uses=2]
        %reg247 = getelementptr sbyte*** %cast219, uint 5               ; <sbyte***> [#uses=1]
        store sbyte** %reg108, sbyte*** %reg247
        ret void
}