; In this testcase, the bytecode reader or writer is not correctly handling the
; ConstExpr reference.  Disassembling this program assembled yields invalid 
; assembly (because there are placeholders still around), which the assembler
; dies on.

; There are two things that need to be fixed here.  Obviously assembling and
; disassembling this would be good, but in addition to that, the bytecode
; reader should NEVER produce a program "successfully" with placeholders still
; around!

; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as

%.LC0 = internal global [4 x sbyte] c"foo\00"		; <[4 x sbyte]*> [#uses=1]

%X = global sbyte * null

implementation   ; Functions:

declare int %puts(sbyte*)

void %main() {
bb1:					;[#uses=0]
	%reg211 = call int %puts( sbyte* getelementptr ([4 x sbyte]* %.LC0, uint 0, uint 0) )		; <int> [#uses=0]
	ret void
}
