forked from OSchip/llvm-project
codegen constant data as such. add QualType::isConstant()
llvm-svn: 55603
This commit is contained in:
parent
fa558788e7
commit
f380a0de07
|
@ -131,6 +131,8 @@ public:
|
|||
bool isRestrictQualified() const {
|
||||
return (ThePtr & Restrict) ? true : false;
|
||||
}
|
||||
|
||||
bool isConstant(ASTContext& Ctx) const;
|
||||
|
||||
/// addConst/addVolatile/addRestrict - add the specified type qual to this
|
||||
/// QualType.
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -449,6 +449,7 @@ void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D) {
|
|||
}
|
||||
|
||||
GV->setInitializer(Init);
|
||||
GV->setConstant(D->getType().isConstant(Context));
|
||||
|
||||
// FIXME: This is silly; getTypeAlign should just work for incomplete arrays
|
||||
unsigned Align;
|
||||
|
|
Loading…
Reference in New Issue