public:
QualType getType() const { return DeclType; }
void setType(QualType newType) { DeclType = newType; }
- QualType getCanonicalType() const { return DeclType.getCanonicalType(); }
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) {
}
void CodeGenFunction::EmitStaticBlockVarDecl(const BlockVarDecl &D) {
- QualType Ty = D.getCanonicalType();
+ QualType Ty = D.getType();
assert(Ty->isConstantSizeType() && "VLAs can't be static");
llvm::Value *&DMEntry = LocalDeclMap[&D];
Init, ContextName + "." + D.getName(),
&CGM.getModule(), 0,
Ty.getAddressSpace());
-
}
/// EmitLocalBlockVarDecl - Emit code and set up an entry in LocalDeclMap for a
/// variable declaration with auto, register, or no storage class specifier.
/// These turn into simple stack objects.
void CodeGenFunction::EmitLocalBlockVarDecl(const BlockVarDecl &D) {
- QualType Ty = D.getCanonicalType();
+ QualType Ty = D.getType();
llvm::Value *DeclPtr;
if (Ty->isConstantSizeType()) {
/// Emit an alloca for the specified parameter and set up LocalDeclMap.
void CodeGenFunction::EmitParmDecl(const ParmVarDecl &D, llvm::Value *Arg) {
- QualType Ty = D.getCanonicalType();
+ QualType Ty = D.getType();
llvm::Value *DeclPtr;
if (!Ty->isConstantSizeType()) {
MergeAttributes(New, Old);
- QualType OldQType = Old->getType().getCanonicalType();
- QualType NewQType = New->getType().getCanonicalType();
+ QualType OldQType = Context.getCanonicalType(Old->getType());
+ QualType NewQType = Context.getCanonicalType(New->getType());
// Function types need to be compatible, not identical. This handles
// duplicate function decls like "void f(int); void f(enum X);" properly.
MergeAttributes(New, Old);
// Verify the types match.
- if (Old->getCanonicalType() != New->getCanonicalType() &&
- !areEquivalentArrayTypes(New->getCanonicalType(), Old->getCanonicalType())) {
+ QualType OldCType = Context.getCanonicalType(Old->getType());
+ QualType NewCType = Context.getCanonicalType(New->getType());
+ if (OldCType != NewCType && !areEquivalentArrayTypes(NewCType, OldCType)) {
Diag(New->getLocation(), diag::err_redefinition, New->getName());
Diag(Old->getLocation(), diag::err_previous_definition);
return New;
for (unsigned i = 0, e = Method->getNumParams(); i != e; ++i) {
ParmVarDecl *ParamDecl = Method->getParamDecl(i);
ParmVarDecl *PrevParamDecl = PrevMethod->getParamDecl(i);
- if (ParamDecl->getCanonicalType() != PrevParamDecl->getCanonicalType())
+ if (Context.getCanonicalType(ParamDecl->getType()) !=
+ Context.getCanonicalType(PrevParamDecl->getType()))
return false;
}
return true;