[cfe-commits] r138239 - in /cfe/trunk: lib/AST/ExprConstant.cpp test/SemaCXX/references.cpp

Eli Friedman eli.friedman at gmail.com
Mon Aug 22 15:40:40 PDT 2011


On Mon, Aug 22, 2011 at 10:24 AM, Chandler Carruth <chandlerc at gmail.com> wrote:
> Author: chandlerc
> Date: Mon Aug 22 12:24:56 2011
> New Revision: 138239
>
> URL: http://llvm.org/viewvc/llvm-project?rev=138239&view=rev
> Log:
> Fix a crash-on-valid that has been here for a very long time:
>
>  const int &x = x;
>
> This crashed by inifinetly recursing within the lvalue evaluation
> routine. I've added a (somewhat) braindead way of preventing this
> recursion. If folks have better suggestions for how to avoid it I'm all
> ears.

Well, I definitely agree this is braindead; actually, it's a bit too
braindead.  Take the following:

extern int& x;
int& y = x;
int& x = y;

We probably want to do this the same way we do other kinds of
recursion into decl's for expr evaluation; see setEvaluatedValue etc.

-Eli




More information about the cfe-commits mailing list