From 3201dce221fc2910baee72d927f5caf2747a2ba7 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Fri, 8 Mar 2019 09:16:31 +0000 Subject: Merging r355491: ------------------------------------------------------------------------ r355491 | hans | 2019-03-06 11:26:19 +0100 (Wed, 06 Mar 2019) | 9 lines Inline asm constraints: allow ICE-like pointers for the "n" constraint (PR40890) Apparently GCC allows this, and there's code relying on it (see bug). The idea is to allow expression that would have been allowed if they were cast to int. So I based the code on how such a cast would be done (the CK_PointerToIntegral case in IntExprEvaluator::VisitCastExpr()). Differential Revision: https://reviews.llvm.org/D58821 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_80@355674 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/AST/APValue.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include') diff --git a/include/clang/AST/APValue.h b/include/clang/AST/APValue.h index d4057c9da5..055f13f362 100644 --- a/include/clang/AST/APValue.h +++ b/include/clang/AST/APValue.h @@ -257,6 +257,12 @@ public: return const_cast(this)->getInt(); } + /// Try to convert this value to an integral constant. This works if it's an + /// integer, null pointer, or offset from a null pointer. Returns true on + /// success. + bool toIntegralConstant(APSInt &Result, QualType SrcTy, + const ASTContext &Ctx) const; + APFloat &getFloat() { assert(isFloat() && "Invalid accessor"); return *(APFloat*)(char*)Data.buffer; -- cgit v1.2.3