; RUN: opt < %s -scalarrepl -S | FileCheck %s

target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
target triple = "i386-pc-linux-gnu"


; PR3466
; Off end of array, don't transform.
define i32 @test1() {
; CHECK: @test1
; CHECK-NOT: = alloca
	%X = alloca [4 x i32]
	%Y = getelementptr [4 x i32]* %X, i64 0, i64 6		; <i32*> [#uses=2]
	store i32 0, i32* %Y
	%Z = load i32* %Y		; <i32> [#uses=1]
	ret i32 %Z
}


; Off end of array, don't transform.
define i32 @test2() nounwind {
entry:
; CHECK: @test2
; CHECK-NOT: = alloca
        %yx2.i = alloca float, align 4          ; <float*> [#uses=1]            
        %yx26.i = bitcast float* %yx2.i to i64*         ; <i64*> [#uses=1]      
        %0 = load i64* %yx26.i, align 8         ; <i64> [#uses=0]               
        unreachable
}

%base = type { i32, [0 x i8] }
%padded = type { %base, [1 x i32] }

; PR5436
define void @test3() {
entry:
; CHECK: @test3
; CHECK-NOT: = alloca
; CHECK: store i64
  %var_1 = alloca %padded, align 8                ; <%padded*> [#uses=3]
  %0 = getelementptr inbounds %padded* %var_1, i32 0, i32 0 ; <%base*> [#uses=2]
  
  %p2 = getelementptr inbounds %base* %0, i32 0, i32 1, i32 0 ; <i8*> [#uses=1]
  store i8 72, i8* %p2, align 1
  
  ; 72 -> a[0].

  %callret = call %padded *@test3f() ; <i32> [#uses=2]
  %callretcast = bitcast %padded* %callret to i8*                     ; <i8*> [#uses=1]
  %var_11 = bitcast %padded* %var_1 to i8*        ; <i8*> [#uses=1]
  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %callretcast, i8* %var_11, i32 8, i32 4, i1 false)
  ret void
}

declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind

declare %padded* @test3f()
