Currently, unary expressions involving valarray will create a temporary. This leads to dangling references in expressions like `-a * b`, because `-a` is a temporary and the resulting expression will refer to it. This patch fixes the problem by creating a lazy expression to perform the unary operation instead of eagerly creating a temporary valarray. This is permitted by the Standard, which does not specify the exact type of most expressions involving valarrays. This is technically an ABI break, however I believe the actual potential for breakage is very low. rdar://90152242 Differential Revision: https://reviews.llvm.org/D125019 |
||
|---|---|---|
| .. | ||
| class.gslice | ||
| class.slice | ||
| template.gslice.array | ||
| template.indirect.array | ||
| template.mask.array | ||
| template.slice.array | ||
| template.valarray | ||
| valarray.nonmembers | ||
| valarray.range | ||
| valarray.syn | ||