codegen constant data as such. add QualType::isConstant()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55603 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index 2c5a3f4..41cd828 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -11,6 +11,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "clang/AST/ASTContext.h"
 #include "clang/AST/Type.h"
 #include "clang/AST/DeclCXX.h"
 #include "clang/AST/DeclObjC.h"
@@ -19,6 +20,16 @@
 #include <sstream>
 using namespace clang;
 
+bool QualType::isConstant(ASTContext& Ctx) const {
+  if (isConstQualified())
+    return true;
+
+  if (getTypePtr()->isArrayType())
+    return Ctx.getAsArrayType(*this)->getElementType().isConstant(Ctx);
+
+  return false;
+}
+
 void Type::Destroy(ASTContext& C) { delete this; }
 
 void FunctionTypeProto::Destroy(ASTContext& C) {