On 13.06.2013, at 00:31, Richard Smith wrote:

> Author: rsmith
> Date: Wed Jun 12 17:31:48 2013
> New Revision: 183872
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=183872&view=rev
> Log:
> PR12086, PR15117
> 
> Introduce CXXStdInitializerListExpr node, representing the implicit
> construction of a std::initializer_list<T> object from its underlying array.
> The AST representation of such an expression goes from an InitListExpr with a
> flag set, to a CXXStdInitializerListExpr containing a MaterializeTemporaryExpr
> containing an InitListExpr (possibly wrapped in a CXXBindTemporaryExpr).
> 
> This more detailed representation has several advantages, the most important 
> of
> which is that the new MaterializeTemporaryExpr allows us to directly model
> lifetime extension of the underlying temporary array. Using that, this patch
> *drastically* simplifies the IR generation of this construct, provides IR
> generation support for nested global initializer_list objects, fixes several
> bugs where the destructors for the underlying array would accidentally not get
> invoked, and provides constant expression evaluation support for
> std::initializer_list objects.

Awesome! I remember what a pain it was trying to implement the IR for this 
stuff.

Sebastian
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to