[cfe-commits] r146813 - in /cfe/trunk: lib/AST/ExprConstant.cpp test/SemaCXX/constant-expression-cxx11.cpp

Richard Smith richard at metafoo.co.uk
Mon Dec 19 14:08:00 PST 2011


Hi Eli,

On Sat, December 17, 2011 02:24, Eli Friedman wrote:
> Author: efriedma
> Date: Fri Dec 16 20:24:21 2011
> New Revision: 146813
>
> URL: http://llvm.org/viewvc/llvm-project?rev=146813&view=rev
> Log:
> Add a missing check before trying to evaluate a temporary.  PR11595.
>
> Modified:
> cfe/trunk/lib/AST/ExprConstant.cpp
> cfe/trunk/test/SemaCXX/constant-expression-cxx11.cpp
>
> Modified: cfe/trunk/lib/AST/ExprConstant.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=14
> 6813&r1=146812&r2=146813&view=diff
> ==============================================================================
>  --- cfe/trunk/lib/AST/ExprConstant.cpp (original)
> +++ cfe/trunk/lib/AST/ExprConstant.cpp Fri Dec 16 20:24:21 2011
> @@ -2066,6 +2066,9 @@
> return false; BaseTy =
> E->getBase()->getType()->getAs<PointerType>()->getPointeeType();
> } else if (E->getBase()->isRValue()) {
> +      if (!E->getBase()->getType()->isRecordType() ||
> +          !E->getBase()->getType()->isLiteralType())
> +        return false;

Thanks for fixing this. Constant evaluation failures should have an associated
diagnostic in order to ensure a constexpr call stack is produced; I've added
one in r146915.

- Richard




More information about the cfe-commits mailing list