[AST] Initialized data after TypeSourceInfo
There is no initialization of the data between allocation and first getBeginLoc call. allocation: llvm-project/clang/lib/AST/ASTContext.cpp:3022 use: llvm-project/clang/lib/AST/TypeLoc.cpp:222 Msan report https://reviews.llvm.org/P8306 Reviewed By: thurston Differential Revision: https://reviews.llvm.org/D150499
This commit is contained in:
@@ -6640,7 +6640,7 @@ class alignas(8) TypeSourceInfo {
|
||||
|
||||
QualType Ty;
|
||||
|
||||
TypeSourceInfo(QualType ty) : Ty(ty) {}
|
||||
TypeSourceInfo(QualType ty, size_t DataSize); // implemented in TypeLoc.h
|
||||
|
||||
public:
|
||||
/// Return the type wrapped by this type source info.
|
||||
|
||||
@@ -240,6 +240,11 @@ private:
|
||||
static SourceRange getLocalSourceRangeImpl(TypeLoc TL);
|
||||
};
|
||||
|
||||
inline TypeSourceInfo::TypeSourceInfo(QualType ty, size_t DataSize) : Ty(ty) {
|
||||
// Init data attached to the object. See getTypeLoc.
|
||||
memset(this + 1, 0, DataSize);
|
||||
}
|
||||
|
||||
/// Return the TypeLoc for a type source info.
|
||||
inline TypeLoc TypeSourceInfo::getTypeLoc() const {
|
||||
// TODO: is this alignment already sufficient?
|
||||
|
||||
@@ -3018,7 +3018,7 @@ TypeSourceInfo *ASTContext::CreateTypeSourceInfo(QualType T,
|
||||
|
||||
auto *TInfo =
|
||||
(TypeSourceInfo*)BumpAlloc.Allocate(sizeof(TypeSourceInfo) + DataSize, 8);
|
||||
new (TInfo) TypeSourceInfo(T);
|
||||
new (TInfo) TypeSourceInfo(T, DataSize);
|
||||
return TInfo;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user