| ; This test is lowered from C code that does some simple aritmetic |
| ; with struct members. |
| |
| ; REQUIRES: allow_dump |
| ; RUN: %p2i -i %s --args --verbose inst -threads=0 | FileCheck %s |
| |
| define internal i32 @compute_important_function(i32 %v1, i32 %v2) { |
| entry: |
| %__2 = inttoptr i32 %v1 to i32* |
| %_v0 = load i32, i32* %__2, align 1 |
| |
| ; CHECK: entry: |
| ; CHECK-NEXT: %_v0 = load i32, i32* {{.*}}, align 1 |
| |
| %__4 = inttoptr i32 %v2 to i32* |
| %_v1 = load i32, i32* %__4, align 1 |
| %gep = add i32 %v2, 12 |
| %__7 = inttoptr i32 %gep to i32* |
| %_v2 = load i32, i32* %__7, align 1 |
| %mul = mul i32 %_v2, %_v1 |
| %gep6 = add i32 %v1, 4 |
| %__11 = inttoptr i32 %gep6 to i32* |
| %_v3 = load i32, i32* %__11, align 1 |
| %gep8 = add i32 %v2, 8 |
| %__14 = inttoptr i32 %gep8 to i32* |
| %_v4 = load i32, i32* %__14, align 1 |
| %gep10 = add i32 %v2, 4 |
| %__17 = inttoptr i32 %gep10 to i32* |
| %_v5 = load i32, i32* %__17, align 1 |
| %mul3 = mul i32 %_v5, %_v4 |
| %gep12 = add i32 %v1, 8 |
| %__21 = inttoptr i32 %gep12 to i32* |
| %_v6 = load i32, i32* %__21, align 1 |
| %mul7 = mul i32 %_v6, %_v3 |
| %mul9 = mul i32 %mul7, %_v6 |
| %gep14 = add i32 %v1, 12 |
| %__26 = inttoptr i32 %gep14 to i32* |
| %_v7 = load i32, i32* %__26, align 1 |
| %mul11 = mul i32 %mul9, %_v7 |
| %add4.neg = add i32 %mul, %_v0 |
| %add = sub i32 %add4.neg, %_v3 |
| %sub = sub i32 %add, %mul3 |
| %sub12 = sub i32 %sub, %mul11 |
| ret i32 %sub12 |
| |
| ; CHECK: %sub12 = sub i32 %sub, %mul11 |
| ; CHECK-NEXT: ret i32 %sub12 |
| } |