From: David Blaikie Date: Fri, 24 May 2013 21:24:35 +0000 (+0000) Subject: PR16091: Error when attempting to emit debug info for undeduced auto return types X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=912964863c344dd84976ee281bd213d0485645ba;p=clang PR16091: Error when attempting to emit debug info for undeduced auto return types Perhaps we should just suppress this, rather than erroring, but since we have the infrastructure for it I figured I'd use it - if this is determined to be not the right thing we should probably remove that infrastructure entirely. I guess it's lying around from the early days of implementing debug info support. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182673 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 561490d25b..e5c3a053b5 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -1827,7 +1827,10 @@ static QualType UnwrapTypeForDebugInfo(QualType T, const ASTContext &C) { T = cast(T)->getReplacementType(); break; case Type::Auto: - T = cast(T)->getDeducedType(); + QualType DT = cast(T)->getDeducedType(); + if (DT.isNull()) + return T; + T = DT; break; } @@ -2044,8 +2047,10 @@ llvm::DIType CGDebugInfo::CreateTypeNode(QualType Ty, llvm::DIFile Unit) { case Type::TypeOf: case Type::Decltype: case Type::UnaryTransform: - case Type::Auto: llvm_unreachable("type should have been unwrapped!"); + case Type::Auto: + Diag = "auto"; + break; } assert(Diag && "Fall through without a diagnostic?"); diff --git a/test/CodeGenCXX/debug-info-cxx1y.cpp b/test/CodeGenCXX/debug-info-cxx1y.cpp new file mode 100644 index 0000000000..e5bfd5782e --- /dev/null +++ b/test/CodeGenCXX/debug-info-cxx1y.cpp @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -emit-llvm-only -std=c++1y -g %s 2>&1 | FileCheck %s + +struct foo { + auto func(); // CHECK: error: debug information for auto is not yet supported +}; + +foo f;