; This test is lowered from C code that does some simple aritmetic
; with struct members.

; TODO(kschimpf) Find out why lc2i is needed.
; REQUIRES: allow_llvm_ir_as_input
; RUN: %lc2i -i %s --args --verbose inst | FileCheck %s
; RUN: %lc2i -i %s --args --verbose none | FileCheck --check-prefix=ERRORS %s

define internal i32 @compute_important_function(i32 %v1, i32 %v2) {
entry:
  %__2 = inttoptr i32 %v1 to i32*
  %_v0 = load i32* %__2, align 1

; CHECK:        entry:
; CHECK-NEXT:       %__2 = i32 %v1
; CHECK-NEXT:       %_v0 = load i32* {{.*}}, align 1

  %__4 = inttoptr i32 %v2 to i32*
  %_v1 = load i32* %__4, align 1
  %gep = add i32 %v2, 12
  %__7 = inttoptr i32 %gep to i32*
  %_v2 = load i32* %__7, align 1
  %mul = mul i32 %_v2, %_v1
  %gep6 = add i32 %v1, 4
  %__11 = inttoptr i32 %gep6 to i32*
  %_v3 = load i32* %__11, align 1
  %gep8 = add i32 %v2, 8
  %__14 = inttoptr i32 %gep8 to i32*
  %_v4 = load i32* %__14, align 1
  %gep10 = add i32 %v2, 4
  %__17 = inttoptr i32 %gep10 to i32*
  %_v5 = load i32* %__17, align 1
  %mul3 = mul i32 %_v5, %_v4
  %gep12 = add i32 %v1, 8
  %__21 = inttoptr i32 %gep12 to i32*
  %_v6 = load 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* %__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
}

; ERRORS-NOT: ICE translation error
