; This test makes sure that these instructions are properly constant propagated.

; RUN: opt < %s -ipsccp -S | not grep load
; RUN: opt < %s -ipsccp -S | not grep add
; RUN: opt < %s -ipsccp -S | not grep phi


@Y = constant [2 x { i212, float }] [ { i212, float } { i212 12, float 1.0 }, 
                                     { i212, float } { i212 37, float 2.0 } ]

define internal float @test2() {
	%A = getelementptr [2 x { i212, float}]* @Y, i32 0, i32 1, i32 1
	%B = load float* %A
	ret float %B
}

define internal float  @test3() {
	%A = getelementptr [2 x { i212, float}]* @Y, i32 0, i32 0, i32 1
	%B = load float* %A
	ret float %B
}

define internal float @test()
{
   %A = call float @test2()
   %B = call float @test3()

   %E = fdiv float %B, %A
   ret float %E
}

define float @All()
{
  %A = call float @test()
  %B = fcmp oge float %A, 1.0
  br i1 %B, label %T, label %F
T:
  %C = fadd float %A, 1.0
  br label %exit
F:
  %D = fadd float %A, 2.0
  br label %exit
exit:
  %E = phi float [%C, %T], [%D, %F]
  ret float %E
}



