Pull in r321999 from upstream clang trunk (by Ivan A. Kosarev):
[CodeGen] Fix TBAA info for accesses to members of base classes Resolves: Bug 35724 - regression (r315984): fatal error: error in backend: Broken function found (Did not see access type in access path!) https://bugs.llvm.org/show_bug.cgi?id=35724 Differential Revision: https://reviews.llvm.org/D41547 This fixes "Did not see access type in access path" fatal errors when building the devel/gdb port (version 8.1). Reported by: jbeich PR: 226658 MFC after: 3 months X-MFC-With: r327952
This commit is contained in:
parent
18672e1082
commit
c85e8aea72
@ -1034,8 +1034,12 @@ Address CodeGenFunction::EmitPointerWithAlignment(const Expr *E,
|
||||
// Derived-to-base conversions.
|
||||
case CK_UncheckedDerivedToBase:
|
||||
case CK_DerivedToBase: {
|
||||
Address Addr = EmitPointerWithAlignment(CE->getSubExpr(), BaseInfo,
|
||||
TBAAInfo);
|
||||
// TODO: Support accesses to members of base classes in TBAA. For now, we
|
||||
// conservatively pretend that the complete object is of the base class
|
||||
// type.
|
||||
if (TBAAInfo)
|
||||
*TBAAInfo = CGM.getTBAAAccessInfo(E->getType());
|
||||
Address Addr = EmitPointerWithAlignment(CE->getSubExpr(), BaseInfo);
|
||||
auto Derived = CE->getSubExpr()->getType()->getPointeeCXXRecordDecl();
|
||||
return GetAddressOfBaseClass(Addr, Derived,
|
||||
CE->path_begin(), CE->path_end(),
|
||||
|
Loading…
x
Reference in New Issue
Block a user