diff options
Diffstat (limited to 'clang/lib/CIR/CodeGen')
-rw-r--r-- | clang/lib/CIR/CodeGen/CIRGenDecl.cpp | 8 | ||||
-rw-r--r-- | clang/lib/CIR/CodeGen/CIRGenModule.cpp | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/CIR/CodeGen/CIRGenDecl.cpp b/clang/lib/CIR/CodeGen/CIRGenDecl.cpp index 3d15a70..d7cbb4f 100644 --- a/clang/lib/CIR/CodeGen/CIRGenDecl.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenDecl.cpp @@ -276,6 +276,14 @@ void CIRGenFunction::emitDecl(const Decl &d) { case Decl::OpenACCRoutine: emitOpenACCRoutine(cast<OpenACCRoutineDecl>(d)); return; + case Decl::Typedef: // typedef int X; + case Decl::TypeAlias: { // using X = int; [C++0x] + QualType ty = cast<TypedefNameDecl>(d).getUnderlyingType(); + assert(!cir::MissingFeatures::generateDebugInfo()); + if (ty->isVariablyModifiedType()) + cgm.errorNYI(d.getSourceRange(), "emitDecl: variably modified type"); + return; + } default: cgm.errorNYI(d.getSourceRange(), std::string("emitDecl: unhandled decl type: ") + diff --git a/clang/lib/CIR/CodeGen/CIRGenModule.cpp b/clang/lib/CIR/CodeGen/CIRGenModule.cpp index 1b50454..3b13d495 100644 --- a/clang/lib/CIR/CodeGen/CIRGenModule.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenModule.cpp @@ -618,6 +618,8 @@ void CIRGenModule::emitTopLevelDecl(Decl *decl) { emitGlobalOpenACCDecl(cast<OpenACCDeclareDecl>(decl)); break; + case Decl::Typedef: + case Decl::TypeAlias: // using foo = bar; [C++11] case Decl::Record: case Decl::CXXRecord: assert(!cir::MissingFeatures::generateDebugInfo()); |