Richard Smith 410306bf6e Add two new AST nodes to represent initialization of an array in terms of
initialization of each array element:

 * ArrayInitLoopExpr is a prvalue of array type with two subexpressions:
   a common expression (an OpaqueValueExpr) that represents the up-front
   computation of the source of the initialization, and a subexpression
   representing a per-element initializer
 * ArrayInitIndexExpr is a prvalue of type size_t representing the current
   position in the loop

This will be used to replace the creation of explicit index variables in lambda
capture of arrays and copy/move construction of classes with array elements,
and also C++17 structured bindings of arrays by value (which inexplicably allow
copying an array by value, unlike all of C++'s other array declarations).

No uses of these nodes are introduced by this change, however.

llvm-svn: 289413
2016-12-12 02:53:20 +00:00
..
2016-07-18 19:02:11 +00:00
2015-10-20 13:23:58 +00:00
2016-07-18 19:02:11 +00:00
2016-07-18 19:02:11 +00:00
2016-07-18 19:02:11 +00:00
2016-11-04 06:29:27 +00:00
2016-07-18 19:02:11 +00:00
2016-07-18 19:02:11 +00:00
2016-07-18 19:02:11 +00:00
2016-07-18 19:02:11 +00:00
2016-07-18 19:02:11 +00:00
2016-07-18 19:02:11 +00:00
2015-11-12 03:57:16 +00:00
2016-07-18 19:02:11 +00:00