]> granicus.if.org Git - clang/commit
Restructure checking for, and warning on, lifetime extension.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Tue, 17 Jul 2018 00:11:41 +0000 (00:11 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Tue, 17 Jul 2018 00:11:41 +0000 (00:11 +0000)
commitbd8c87930bc3817282e4c040c16a90a66ca7f267
tree29a3c5673d9fcd678f97f311c03732c30fd973cf
parent3ad62f50a0a775140c6c35308ade2f2caea67ed1
Restructure checking for, and warning on, lifetime extension.

This change implements C++ DR1696, which makes initialization of a
reference member of a class from a temporary object ill-formed. The
standard wording here is imprecise, but we interpret it as meaning that
any time a mem-initializer would result in lifetime extension, the
program is ill-formed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337226 91177308-0d34-0410-b5e6-96231b3b80d8
23 files changed:
include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Sema/Initialization.h
include/clang/Sema/Sema.h
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaInit.cpp
test/Analysis/initializer.cpp
test/CXX/drs/dr16xx.cpp
test/CXX/drs/dr18xx.cpp
test/CXX/special/class.copy/p11.0x.copy.cpp
test/CXX/special/class.copy/p11.0x.move.cpp
test/CXX/special/class.ctor/p5-0x.cpp
test/CXX/temp/temp.param/p5.cpp
test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
test/CodeGenCXX/temporaries.cpp
test/SemaCXX/constant-expression-cxx11.cpp
test/SemaCXX/constexpr-default-arg.cpp
test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp
test/SemaCXX/eval-crashes.cpp
test/SemaCXX/member-init.cpp
test/SemaCXX/warn-dangling-field.cpp
www/cxx_dr_status.html