; RUN: llvm-as < %s | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | not grep sub | |
%S = type { int, sbyte } | |
sbyte %test(sbyte** %P) { | |
%A = load sbyte** %P | |
%B = load sbyte* %A | |
%X = load sbyte** %P | |
%Y = load sbyte* %X | |
%R = sub sbyte %B, %Y | |
ret sbyte %R | |
} | |
sbyte %test(%S ** %P) { | |
%A = load %S** %P | |
%B = getelementptr %S* %A, int 0, ubyte 1 | |
%C = load sbyte* %B | |
%X = load %S** %P | |
%Y = getelementptr %S* %X, int 0, ubyte 1 | |
%Z = load sbyte* %Y | |
%R = sub sbyte %C, %Z | |
ret sbyte %R | |
} |