svn commit: r331066 - head/contrib/llvm/tools/clang/lib/CodeGen

Dimitry Andric dim at FreeBSD.org
Fri Mar 16 18:04:14 UTC 2018


Author: dim
Date: Fri Mar 16 18:04:13 2018
New Revision: 331066
URL: https://svnweb.freebsd.org/changeset/base/331066

Log:
  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

Modified:
  head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp

Modified: head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp
==============================================================================
--- head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp	Fri Mar 16 17:50:44 2018	(r331065)
+++ head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp	Fri Mar 16 18:04:13 2018	(r331066)
@@ -1034,8 +1034,12 @@ Address CodeGenFunction::EmitPointerWithAlignment(cons
     // 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(),


More information about the svn-src-head mailing list