diff options
-rw-r--r-- | test/Transforms/InstCombine/getelementptr.ll | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/test/Transforms/InstCombine/getelementptr.ll b/test/Transforms/InstCombine/getelementptr.ll index b27bbc875e..16b947b382 100644 --- a/test/Transforms/InstCombine/getelementptr.ll +++ b/test/Transforms/InstCombine/getelementptr.ll @@ -7,21 +7,23 @@ implementation -int *"foo"(int * %I) -begin - %A = getelementptr int* %I, uint 17 - store int 23, int* %A - - %B = load int* %A - store int %B, int* %A, uint 0 - - %C = getelementptr int* %A - ret int* %C -end - -int *"foo2"(int * %I) -begin - %A = getelementptr int* %I, uint 0 ; Noop +int *"foo1"(int * %I) { ; Test noop elimination + %A = getelementptr int* %I, uint 0 ret int * %A -end +} + +int* %foo2(int* %I) { ; Test noop elimination + %A = getelementptr int* %I + ret int* %A +} +int* %foo3(int * %I) { ; Test that two array indexing geps fold + %A = getelementptr int* %I, uint 17 + %B = getelementptr int* %A, uint 4 + ret int* %B +} +int* %foo4({int} *%I) { ; Test that two getelementptr insts fold + %A = getelementptr {int}* %I, uint 1 + %B = getelementptr {int}* %A, uint 0, ubyte 0 + ret int* %B +} |