; RUN: llvm-as < %s | llc
; verify PR 1700 is still fixed
; ModuleID = 'hh.c'
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:128:128"
target triple = "i686-apple-darwin8"

define x86_fp80 @x() {
entry:
	%retval = alloca x86_fp80, align 16		; <x86_fp80*> [#uses=2]
	%tmp = alloca x86_fp80, align 16		; <x86_fp80*> [#uses=2]
	%d = alloca double, align 8		; <double*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store double 0.000000e+00, double* %d, align 8
	%tmp1 = load double* %d, align 8		; <double> [#uses=1]
	%tmp12 = fpext double %tmp1 to x86_fp80		; <x86_fp80> [#uses=1]
	store x86_fp80 %tmp12, x86_fp80* %tmp, align 16
	%tmp3 = load x86_fp80* %tmp, align 16		; <x86_fp80> [#uses=1]
	store x86_fp80 %tmp3, x86_fp80* %retval, align 16
	br label %return

return:		; preds = %entry
	%retval4 = load x86_fp80* %retval		; <x86_fp80> [#uses=1]
	ret x86_fp80 %retval4
}

define double @y() {
entry:
	%retval = alloca double, align 8		; <double*> [#uses=2]
	%tmp = alloca double, align 8		; <double*> [#uses=2]
	%ld = alloca x86_fp80, align 16		; <x86_fp80*> [#uses=2]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store x86_fp80 0xK00000000000000000000, x86_fp80* %ld, align 16
	%tmp1 = load x86_fp80* %ld, align 16		; <x86_fp80> [#uses=1]
	%tmp12 = fptrunc x86_fp80 %tmp1 to double		; <double> [#uses=1]
	store double %tmp12, double* %tmp, align 8
	%tmp3 = load double* %tmp, align 8		; <double> [#uses=1]
	store double %tmp3, double* %retval, align 8
	br label %return

return:		; preds = %entry
	%retval4 = load double* %retval		; <double> [#uses=1]
	ret double %retval4
}
