I temporarily reverted the commit in r311680 to get the bots going again. -- adrian
> On Aug 24, 2017, at 11:12 AM, Adrian Prantl via cfe-commits > <cfe-commits@lists.llvm.org> wrote: > > It looks like this broke / found errors on the green dragon bot: > > http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_check/4115/consoleFull#15752874848254eaf0-7326-4999-85b0-388101f2d404 > > ******************** TEST 'LLVM-Unit :: > ADT/./ADTTests/FilterIteratorTest.FunctionPointer' FAILED ******************** > > Note: Google Test filter = FilterIteratorTest.FunctionPointer > [==========] Running 1 test from 1 test case. > [----------] Global test environment set-up. > [----------] 1 test from FilterIteratorTest > [ RUN ] FilterIteratorTest.FunctionPointer > /Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/llvm/unittests/ADT/IteratorTest.cpp:160:24: > runtime error: load of null pointer of type 'const (lambda at > /Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/llvm/unittests/ADT/IteratorTest.cpp:160:24) > *' > SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior > /Users/buildslave/jenkins/sharedspace/clang-stage2-cmake-RgSan@2/llvm/unittests/ADT/IteratorTest.cpp:160:24 > in > > ******************** > > -- adrian >> On Aug 23, 2017, at 12:39 PM, Richard Smith via cfe-commits >> <cfe-commits@lists.llvm.org> wrote: >> >> Author: rsmith >> Date: Wed Aug 23 12:39:04 2017 >> New Revision: 311589 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=311589&view=rev >> Log: >> [ubsan] PR34266: When sanitizing the 'this' value for a member function that >> happens to be a lambda call operator, use the lambda's 'this' pointer, not >> the captured enclosing 'this' pointer (if any). >> >> Modified: >> cfe/trunk/include/clang/AST/DeclCXX.h >> cfe/trunk/lib/CodeGen/CodeGenFunction.cpp >> cfe/trunk/test/CodeGenCXX/catch-undef-behavior.cpp >> >> Modified: cfe/trunk/include/clang/AST/DeclCXX.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=311589&r1=311588&r2=311589&view=diff >> ============================================================================== >> --- cfe/trunk/include/clang/AST/DeclCXX.h (original) >> +++ cfe/trunk/include/clang/AST/DeclCXX.h Wed Aug 23 12:39:04 2017 >> @@ -2027,7 +2027,10 @@ public: >> >> /// \brief Returns the type of the \c this pointer. >> /// >> - /// Should only be called for instance (i.e., non-static) methods. >> + /// Should only be called for instance (i.e., non-static) methods. Note >> + /// that for the call operator of a lambda closure type, this returns the >> + /// desugared 'this' type (a pointer to the closure type), not the >> captured >> + /// 'this' type. >> QualType getThisType(ASTContext &C) const; >> >> unsigned getTypeQualifiers() const { >> >> Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp?rev=311589&r1=311588&r2=311589&view=diff >> ============================================================================== >> --- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp Wed Aug 23 12:39:04 2017 >> @@ -1014,11 +1014,11 @@ void CodeGenFunction::StartFunction(Glob >> } >> >> // Check the 'this' pointer once per function, if it's available. >> - if (CXXThisValue) { >> + if (CXXABIThisValue) { >> SanitizerSet SkippedChecks; >> SkippedChecks.set(SanitizerKind::ObjectSize, true); >> QualType ThisTy = MD->getThisType(getContext()); >> - EmitTypeCheck(TCK_Load, Loc, CXXThisValue, ThisTy, >> + EmitTypeCheck(TCK_Load, Loc, CXXABIThisValue, ThisTy, >> >> getContext().getTypeAlignInChars(ThisTy->getPointeeType()), >> SkippedChecks); >> } >> >> Modified: cfe/trunk/test/CodeGenCXX/catch-undef-behavior.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/catch-undef-behavior.cpp?rev=311589&r1=311588&r2=311589&view=diff >> ============================================================================== >> --- cfe/trunk/test/CodeGenCXX/catch-undef-behavior.cpp (original) >> +++ cfe/trunk/test/CodeGenCXX/catch-undef-behavior.cpp Wed Aug 23 12:39:04 >> 2017 >> @@ -449,6 +449,27 @@ void upcast_to_vbase() { >> } >> } >> >> +struct ThisAlign { >> + void this_align_lambda(); >> +}; >> +void ThisAlign::this_align_lambda() { >> + // CHECK-LABEL: define >> {{.*}}@"_ZZN9ThisAlign17this_align_lambdaEvENK3$_0clEv" >> + // CHECK-SAME: (%{{.*}}* %[[this:[^)]*]]) >> + // CHECK: %[[this_addr:.*]] = alloca >> + // CHECK: store %{{.*}}* %[[this]], %{{.*}}** %[[this_addr]], >> + // CHECK: %[[this_inner:.*]] = load %{{.*}}*, %{{.*}}** %[[this_addr]], >> + // CHECK: %[[this_outer_addr:.*]] = getelementptr inbounds %{{.*}}, >> %{{.*}}* %[[this_inner]], i32 0, i32 0 >> + // CHECK: %[[this_outer:.*]] = load %{{.*}}*, %{{.*}}** >> %[[this_outer_addr]], >> + // >> + // CHECK: %[[this_inner_isnonnull:.*]] = icmp ne %{{.*}}* >> %[[this_inner]], null >> + // CHECK: %[[this_inner_asint:.*]] = ptrtoint %{{.*}}* %[[this_inner]] to >> i >> + // CHECK: %[[this_inner_misalignment:.*]] = and i{{32|64}} >> %[[this_inner_asint]], {{3|7}}, >> + // CHECK: %[[this_inner_isaligned:.*]] = icmp eq i{{32|64}} >> %[[this_inner_misalignment]], 0 >> + // CHECK: %[[this_inner_valid:.*]] = and i1 %[[this_inner_isnonnull]], >> %[[this_inner_isaligned]], >> + // CHECK: br i1 %[[this_inner_valid:.*]] >> + [&] { return this; } (); >> +} >> + >> namespace CopyValueRepresentation { >> // CHECK-LABEL: define {{.*}} @_ZN23CopyValueRepresentation2S3aSERKS0_ >> // CHECK-NOT: call {{.*}} @__ubsan_handle_load_invalid_value >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits