diff --git a/CodeGen/CodeGenModule.cpp b/CodeGen/CodeGenModule.cpp
index 00c2621..b5f4c8d 100644
--- a/CodeGen/CodeGenModule.cpp
+++ b/CodeGen/CodeGenModule.cpp
@@ -83,15 +83,18 @@
 
       std::vector<llvm::Constant*> ArrayElts;
       const llvm::PointerType *APType = cast<llvm::PointerType>(GV->getType());
-      const llvm::ArrayType *AType = cast<llvm::ArrayType>(APType->getElementType());
+      const llvm::ArrayType *AType = 
+        cast<llvm::ArrayType>(APType->getElementType());
       
       // Copy initializer elements.
       unsigned i = 0;
       for (i = 0; i < NumInitElements; ++i) {
         assert (ILE->getInit(i)->getType()->isIntegerType() 
                 && "Only IntegerType global array initializers are supported");
-        llvm::APSInt Value(static_cast<uint32_t>(
-           getContext().getTypeSize(ILE->getInit(i)->getType(), SourceLocation())));
+        llvm::APSInt 
+          Value(static_cast<uint32_t>
+                (getContext().getTypeSize(ILE->getInit(i)->getType(), 
+                                          SourceLocation())));
         if (ILE->getInit(i)->isIntegerConstantExpr(Value, Context)) {
           llvm::Constant *C = llvm::ConstantInt::get(Value);
           ArrayElts.push_back(C);
@@ -100,8 +103,9 @@
       
       // Initialize remaining array elements.
       unsigned NumArrayElements = AType->getNumElements();
+      const llvm::Type *AElemTy = AType->getElementType();
       for (; i < NumArrayElements; ++i)
-        ArrayElts.push_back(llvm::Constant::getNullValue(AType->getElementType()));
+        ArrayElts.push_back(llvm::Constant::getNullValue(AElemTy));
       
       Init = llvm::ConstantArray::get(AType, ArrayElts);
     } else
