From: Alexey Bataev Date: Fri, 10 Oct 2014 18:58:13 +0000 (+0000) Subject: Bugfix for predefined expressions in dependent context. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ecfc7f0910770a74b4b7aba8731c7c901f104d84;p=clang Bugfix for predefined expressions in dependent context. This bug break compilation with precompiled headers and predefined expressions in dependent context. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219525 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 8410bad88d..bc5498ad9a 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -457,7 +457,7 @@ PredefinedExpr::PredefinedExpr(SourceLocation L, QualType FNTy, IdentType IT, Loc(L), Type(IT), FnName(SL) {} StringLiteral *PredefinedExpr::getFunctionName() { - return cast(FnName); + return cast_or_null(FnName); } StringRef PredefinedExpr::getIdentTypeName(PredefinedExpr::IdentType IT) { diff --git a/test/CodeGenCXX/predefined-expr-cxx14.cpp b/test/CodeGenCXX/predefined-expr-cxx14.cpp index 62c86df294..73b9295e12 100644 --- a/test/CodeGenCXX/predefined-expr-cxx14.cpp +++ b/test/CodeGenCXX/predefined-expr-cxx14.cpp @@ -1,4 +1,9 @@ // RUN: %clang_cc1 -std=c++14 %s -triple %itanium_abi_triple -fblocks -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 -x c++ -std=c++14 -triple %itanium_abi_triple -fblocks -emit-pch -o %t %s +// RUN: %clang_cc1 -x c++ -triple %itanium_abi_triple -std=c++14 -fblocks -include-pch %t %s -emit-llvm -o - | FileCheck %s + +#ifndef HEADER +#define HEADER // CHECK-DAG: @__func__._ZN13ClassTemplateIiE21classTemplateFunctionERi = private unnamed_addr constant [22 x i8] c"classTemplateFunction\00" // CHECK-DAG: @__PRETTY_FUNCTION__._ZN13ClassTemplateIiE21classTemplateFunctionERi = private unnamed_addr constant [69 x i8] c"const auto &ClassTemplate::classTemplateFunction(T &) [T = int]\00" @@ -81,3 +86,5 @@ int main() { t.classTemplateFunction(a); return 0; } +#endif +