diff --git a/lib/Analysis/LiveVariables.cpp b/lib/Analysis/LiveVariables.cpp
index f5a7fb4..e82c1e0 100644
--- a/lib/Analysis/LiveVariables.cpp
+++ b/lib/Analysis/LiveVariables.cpp
@@ -226,19 +226,41 @@
   Visit(B->getRHS());
 }
 
+static VariableArrayType* FindVA(Type* t) {
+  while (ArrayType* vt = dyn_cast<ArrayType>(t)) {
+    if (VariableArrayType* vat = dyn_cast<VariableArrayType>(vt))
+      if (vat->getSizeExpr())
+        return vat;
+    
+    t = vt->getElementType().getTypePtr();
+  }
+  
+  return NULL;
+}
+  
 void TransferFuncs::VisitDeclStmt(DeclStmt* DS) {
   // Declarations effectively "kill" a variable since they cannot
   // possibly be live before they are declared.
   for (DeclStmt::decl_iterator DI=DS->decl_begin(), DE = DS->decl_end();
        DI != DE; ++DI)
     if (VarDecl* VD = dyn_cast<VarDecl>(*DI)) {
-      
-      // Update liveness information.
-      unsigned bit = AD.getIdx(VD);
-      LiveState.getDeclBit(bit) = Dead | AD.AlwaysLive.getDeclBit(bit);
-      
+      // The initializer is evaluated after the variable comes into scope.
+      // Since this is a reverse dataflow analysis, we must evaluate the
+      // transfer function for this expression first.
       if (Expr* Init = VD->getInit())
         Visit(Init);
+      
+      // Update liveness information by killing the VarDecl.
+      unsigned bit = AD.getIdx(VD);
+      LiveState.getDeclBit(bit) = Dead | AD.AlwaysLive.getDeclBit(bit);
+
+      // If the type of VD is a VLA, then we must process its size expressions.
+      // These expressions are evaluated before the variable comes into scope,
+      // so in a reverse dataflow analysis we evaluate them last.
+      for (VariableArrayType* VA = FindVA(VD->getType().getTypePtr()); VA != 0;
+           VA = FindVA(VA->getElementType().getTypePtr()))
+        Visit(VA->getSizeExpr());
+
     }
 }
   
diff --git a/test/Analysis/dead-stores.c b/test/Analysis/dead-stores.c
index d87a559..b1f16b9 100644
--- a/test/Analysis/dead-stores.c
+++ b/test/Analysis/dead-stores.c
@@ -100,7 +100,7 @@
 }
 
 // Filed with PR 2763.
-int f41(int count) {
+int f14(int count) {
   int index, nextLineIndex;
   for (index = 0; index < count; index = nextLineIndex+1) {
     nextLineIndex = index+1;  // no-warning
@@ -108,3 +108,10 @@
   }
   return index;
 }
+
+// Test case for <rdar://problem/6248086>
+void f15(unsigned x, unsigned y) {
+  int count = x * y;   // no-warning
+  int z[count];
+}
+
