1 ; This case fails raise because the store requires that it's argument is of a
2 ; particular type, but the gep is unable to propogate types backwards through
3 ; it, because it doesn't know what type to ask it's operand to be.
5 ; This could be fixed by making all stores add themselves to a list, and check
6 ; their arguments are consistent AFTER all other values are propogated.
8 ; RUN: llvm-as < %s | opt -raise | llvm-dis | not grep '= cast'
10 %Tree = type %struct.tree*
11 %struct.tree = type { int, double, double, %Tree, %Tree, %Tree, %Tree }
13 void %reverse(%Tree %t) {
15 %cast219 = cast %Tree %t to sbyte*** ; <sbyte***> [#uses=2]
16 %reg2221 = getelementptr sbyte*** %cast219, long 6 ; <sbyte***> [#uses=1]
17 %reg108 = load sbyte*** %reg2221 ; <sbyte**> [#uses=2]
18 %reg247 = getelementptr sbyte*** %cast219, long 5 ; <sbyte***> [#uses=1]
19 store sbyte** %reg108, sbyte*** %reg247