From: Richard Smith Date: Thu, 5 Nov 2015 21:16:22 +0000 (+0000) Subject: PR25368: Replace workaround for build failure with modules enabled with a fix X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d4e00edb665596d063322de1a596832c1f7c2452;p=clang PR25368: Replace workaround for build failure with modules enabled with a fix for the root cause. The 'using llvm::isa;' declaration in Basic/LLVM.h only pulls the declarations of llvm::isa that were declared prior to it into namespace clang. In a modules build, this is a hermetic set of just the declarations from LLVM. In a non-modules build, we happened to also pull the declaration from lib/CodeGen/Address.h into namespace clang, which made the code in question accidentally compile. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252211 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/Address.h b/lib/CodeGen/Address.h index b1aa6307e3..9d145fa26b 100644 --- a/lib/CodeGen/Address.h +++ b/lib/CodeGen/Address.h @@ -116,4 +116,11 @@ namespace llvm { } } +namespace clang { + // Make our custom isa and cast available in namespace clang, to mirror + // what we do for LLVM's versions in Basic/LLVM.h. + using llvm::isa; + using llvm::cast; +} + #endif diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp index c97739915d..bbd04dd751 100644 --- a/lib/CodeGen/CGExprConstant.cpp +++ b/lib/CodeGen/CGExprConstant.cpp @@ -1038,7 +1038,7 @@ public: unsigned Type = cast(E)->getIdentType(); if (CGF) { LValue Res = CGF->EmitPredefinedLValue(cast(E)); - return llvm::cast(Res.getAddress()); + return cast(Res.getAddress()); } else if (Type == PredefinedExpr::PrettyFunction) { return CGM.GetAddrOfConstantCString("top level", ".tmp"); }