diff --git a/test/CodeGen/Alpha/2006-01-18-MissedGlobal.ll b/test/CodeGen/Alpha/2006-01-18-MissedGlobal.ll
new file mode 100644
index 00000000000..c9d33d77f6d
--- /dev/null
+++ b/test/CodeGen/Alpha/2006-01-18-MissedGlobal.ll
@@ -0,0 +1,30 @@
+; The global symbol should be legalized
+; RUN: llvm-as < %s | llc -march=alpha 
+
+target endian = little
+target pointersize = 64
+	%struct.LIST_HELP = type { %struct.LIST_HELP*, sbyte* }
+	%struct._IO_FILE = type { int, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, %struct._IO_marker*, %struct._IO_FILE*, int, int, long, ushort, sbyte, [1 x sbyte], sbyte*, long, sbyte*, sbyte*, int, [44 x sbyte] }
+	%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, int }
+%clause_SORT = external global [21 x %struct.LIST_HELP*]		; <[21 x %struct.LIST_HELP*]*> [#uses=1]
+%ia_in = external global %struct._IO_FILE*		; <%struct._IO_FILE**> [#uses=1]
+%multvec_j = external global [100 x uint]		; <[100 x uint]*> [#uses=1]
+
+implementation   ; Functions:
+
+void %main(int %argc) {
+clock_Init.exit:
+	%tmp.5.i575 = load int* null		; <int> [#uses=1]
+	%tmp.309 = seteq int %tmp.5.i575, 0		; <bool> [#uses=1]
+	br bool %tmp.309, label %UnifiedReturnBlock, label %then.17
+
+then.17:		; preds = %clock_Init.exit
+	store %struct._IO_FILE* null, %struct._IO_FILE** %ia_in
+	%savedstack = call sbyte* %llvm.stacksave( )		; <sbyte*> [#uses=0]
+	ret void
+
+UnifiedReturnBlock:		; preds = %clock_Init.exit
+	ret void
+}
+
+declare sbyte* %llvm.stacksave()