+; RUN: llvm-as < %s | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
-%MyVar = uninitialized global int
-%MyIntList = uninitialized global { \2 *, int }
- uninitialized global int ; int*:0
+@MyVar = external global i32 ; <i32*> [#uses=1]
+@MyIntList = external global { i32*, i32 } ; <{ \2*, i32 }*> [#uses=1]
+external global i32 ; <i32*>:0 [#uses=0]
+@AConst = constant i32 123 ; <i32*> [#uses=0]
+@AString = constant [4 x i8] c"test" ; <[4 x i8]*> [#uses=0]
+@ZeroInit = global { [100 x i32], [40 x float] } zeroinitializer ; <{ [100 x i32], [40 x float] }*> [#uses=0]
-%AConst = constant int 123
-
-%AString = constant [4 x ubyte] c"test"
-
-implementation
-
-int "foo"(int %blah)
-begin
- store int 5, int *%MyVar
- store int 12, { \2 *, int } * %MyIntList, uint 0, ubyte 1
- ret int %blah
-end
+define i32 @foo(i32 %blah) {
+ store i32 5, i32* @MyVar
+ %idx = getelementptr { i32*, i32 }* @MyIntList, i64 0, i32 1 ; <i32*> [#uses=1]
+ store i32 12, i32* %idx
+ ret i32 %blah
+}
+hidden dllexport global i32 42
+dllexport global i32 42