Make the type of the IntegerLiteral for bitfield paddings an actual
integer, and initialise its TypeSourceInfo. The initialisation fixes a
crash when using pre-compiled preambles with C++ code-completion. From
Erik Verbruggen! Fixes PR10511.
llvm-svn: 136786
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 4988323..2b6cf31 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -8308,13 +8308,14 @@
return;
}
// All conditions are met. Add a new bitfield to the tail end of ivars.
- llvm::APInt Zero(Context.getTypeSize(Context.CharTy), 0);
- Expr * BW = IntegerLiteral::Create(Context, Zero, Context.CharTy, DeclLoc);
+ llvm::APInt Zero(Context.getTypeSize(Context.IntTy), 0);
+ Expr * BW = IntegerLiteral::Create(Context, Zero, Context.IntTy, DeclLoc);
Ivar = ObjCIvarDecl::Create(Context, cast<ObjCContainerDecl>(EnclosingDecl),
DeclLoc, DeclLoc, 0,
Context.CharTy,
- Context.CreateTypeSourceInfo(Context.CharTy),
+ Context.getTrivialTypeSourceInfo(Context.CharTy,
+ DeclLoc),
ObjCIvarDecl::Private, BW,
true);
AllIvarDecls.push_back(Ivar);