The test fails on Windows:
*From: *Richard Smith via cfe-commits <cfe-commits@lists.llvm.org> *Date: *Fri, May 17, 2019 at 3:58 AM *To: * <cfe-commits@lists.llvm.org> Author: rsmith > Date: Fri May 17 01:01:34 2019 > New Revision: 360998 > > URL: http://llvm.org/viewvc/llvm-project?rev=360998&view=rev > Log: > Fix crash if, during evaluation of __builtin_object_size, we try to load > through an invalid base. > > Modified: > cfe/trunk/lib/AST/ExprConstant.cpp > cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp > > Modified: cfe/trunk/lib/AST/ExprConstant.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=360998&r1=360997&r2=360998&view=diff > > ============================================================================== > --- cfe/trunk/lib/AST/ExprConstant.cpp (original) > +++ cfe/trunk/lib/AST/ExprConstant.cpp Fri May 17 01:01:34 2019 > @@ -3285,6 +3285,11 @@ static bool AreElementsOfSameArray(QualT > static CompleteObject findCompleteObject(EvalInfo &Info, const Expr *E, > AccessKinds AK, const LValue > &LVal, > QualType LValType) { > + if (LVal.InvalidBase) { > + Info.FFDiag(E); > + return CompleteObject(); > + } > + > if (!LVal.Base) { > Info.FFDiag(E, diag::note_constexpr_access_null) << AK; > return CompleteObject(); > > Modified: cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp?rev=360998&r1=360997&r2=360998&view=diff > > ============================================================================== > --- cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp (original) > +++ cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp Fri May 17 > 01:01:34 2019 > @@ -97,3 +97,10 @@ void tooSmallBuf() { > copy5CharsIntoStrict(small.buf); // expected-error{{no matching > function for call}} > } > } > + > +namespace InvalidBase { > + // Ensure this doesn't crash. > + struct S { const char *name; }; > + S invalid_base(); > + constexpr long bos_name = __builtin_object_size(invalid_base().name, 1); > +} > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits