diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-12-09 18:49:13 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-12-09 18:49:13 +0000 |
commit | b8c0f553ed6b7e52b12afa00ace3e30754482037 (patch) | |
tree | 17b50394cbd2219fdb1717c18dc437df586b12be /clang/lib/CodeGen/CodeGenModule.h | |
parent | 0c1c3bbc78e4548831e307c0e527449254a2bbbb (diff) | |
download | llvm-b8c0f553ed6b7e52b12afa00ace3e30754482037.zip llvm-b8c0f553ed6b7e52b12afa00ace3e30754482037.tar.gz llvm-b8c0f553ed6b7e52b12afa00ace3e30754482037.tar.bz2 |
DR1295 and cleanup for P0135R1: Make our initialization code more directly
mirror the description in the standard. Per DR1295, this means that binding a
const / rvalue reference to a bit-field no longer "binds directly", and per
P0135R1, this means that we materialize a temporary in reference binding
after adjusting cv-qualifiers and before performing a derived-to-base cast.
In C++11 onwards, this should have fixed the last case where we would
materialize a temporary of the wrong type (with a subobject adjustment inside
the MaterializeTemporaryExpr instead of outside), but we still have to deal
with that possibility in C++98, unless we want to start using xvalues to
represent materialized temporaries there too.
llvm-svn: 289250
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.h')
0 files changed, 0 insertions, 0 deletions