1 ; The %A getelementptr instruction should be eliminated here
3 ; RUN: if as < %s | opt -instcombine -die | dis | grep getelementptr | grep '%A '
8 %Global = constant [10 x sbyte] c"helloworld"
12 int *%foo1(int* %I) { ; Test noop elimination
13 %A = getelementptr int* %I, long 0
17 int* %foo2(int* %I) { ; Test noop elimination
18 %A = getelementptr int* %I
21 int* %foo3(int * %I) { ; Test that two array indexing geps fold
22 %A = getelementptr int* %I, long 17
23 %B = getelementptr int* %A, long 4
27 int* %foo4({int} *%I) { ; Test that two getelementptr insts fold
28 %A = getelementptr {int}* %I, long 1
29 %B = getelementptr {int}* %A, long 0, ubyte 0
34 ; This should be turned into a constexpr instead of being an instruction
35 %A = getelementptr [10 x sbyte]* %Global, long 0, long 4
41 %A = getelementptr [4 x int]* %M, long 0, long 0
42 %B = getelementptr int* %A, long 2
46 int* %foo7(int* %I, long %C, long %D) {
47 %A = getelementptr int* %I, long %C
48 %B = getelementptr int* %A, long %D