diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index 0ff345a..6d29dd1 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -622,8 +622,32 @@
   }
 }
 
+#define USE_EVALUATE
 
 bool Expr::isConstantExpr(ASTContext &Ctx, SourceLocation *Loc) const {
+#ifdef USE_EVALUATE
+  switch (getStmtClass()) {
+  default:
+    if (!isEvaluatable(Ctx)) {
+      if (Loc) *Loc = getLocStart();
+      return false;
+    }
+    break;
+  case StringLiteralClass:
+  case ObjCStringLiteralClass:
+    return true;
+  case InitListExprClass: {
+    const InitListExpr *Exp = cast<InitListExpr>(this);
+    unsigned numInits = Exp->getNumInits();
+    for (unsigned i = 0; i < numInits; i++) {
+      if (!Exp->getInit(i)->isConstantExpr(Ctx, Loc)) 
+        return false;
+    }
+  }
+  }
+
+  return true;
+#else
   switch (getStmtClass()) {
   default:
     if (Loc) *Loc = getLocStart();
@@ -762,6 +786,7 @@
   case CXXDefaultArgExprClass:
     return cast<CXXDefaultArgExpr>(this)->getExpr()->isConstantExpr(Ctx, Loc);
   }
+#endif
 }
 
 /// isIntegerConstantExpr - this recursive routine will test if an expression is
diff --git a/test/CodeGen/staticinit.c b/test/CodeGen/staticinit.c
index 50c837a..196d931 100644
--- a/test/CodeGen/staticinit.c
+++ b/test/CodeGen/staticinit.c
@@ -18,3 +18,9 @@
   static char a[10];
   static char *b = a;
 }
+
+struct s { void *p; };
+
+void foo(void) {
+  static struct s var = {((void*)&((char*)0)[0])};
+}
