OSDN Git Service

Don't assume a reference refers to at least sizeof(T) bytes.
authorRichard Smith <richard@metafoo.co.uk>
Sat, 1 Feb 2020 03:06:21 +0000 (19:06 -0800)
committerRichard Smith <richard@metafoo.co.uk>
Sat, 1 Feb 2020 03:08:17 +0000 (19:08 -0800)
commit0130b6cb5a8d94511e2bb09ac2f5a613a59f70b4
treef39633cc1ea98c67c40e64559f76c96af4921619
parentdc1d43cfa0294dea6713aa825d287ddaa3ac971b
Don't assume a reference refers to at least sizeof(T) bytes.

When T is a class type, only nvsize(T) bytes need be accessible through
the reference. We had matching bugs in the application of the
dereferenceable attribute and in -fsanitize=undefined.
clang/include/clang/AST/DeclCXX.h
clang/lib/AST/DeclCXX.cpp
clang/lib/CodeGen/CGCall.cpp
clang/lib/CodeGen/CGClass.cpp
clang/lib/CodeGen/CGExpr.cpp
clang/lib/CodeGen/CodeGenModule.h
clang/test/CodeGenCXX/catch-undef-behavior.cpp
clang/test/CodeGenCXX/thunks.cpp