Author: rtrieu Date: Tue Oct 23 19:07:41 2018 New Revision: 345111 URL: http://llvm.org/viewvc/llvm-project?rev=345111&view=rev Log: [Sema] Fix -Wcomma in dependent context
When there is a dependent type inside a cast, the CastKind becomes CK_Dependent instead of CK_ToVoid. This fix will check that there is a dependent cast, the original type is dependent, and the target type is void to ignore the cast. https://bugs.llvm.org/show_bug.cgi?id=39375 Modified: cfe/trunk/lib/Sema/SemaExpr.cpp cfe/trunk/test/SemaCXX/warn-comma-operator.cpp Modified: cfe/trunk/lib/Sema/SemaExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=345111&r1=345110&r2=345111&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) +++ cfe/trunk/lib/Sema/SemaExpr.cpp Tue Oct 23 19:07:41 2018 @@ -11280,6 +11280,12 @@ static bool IgnoreCommaOperand(const Exp if (CE->getCastKind() == CK_ToVoid) { return true; } + + // static_cast<void> on a dependent type will not show up as CK_ToVoid. + if (CE->getCastKind() == CK_Dependent && E->getType()->isVoidType() && + CE->getSubExpr()->getType()->isDependentType()) { + return true; + } } return false; Modified: cfe/trunk/test/SemaCXX/warn-comma-operator.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-comma-operator.cpp?rev=345111&r1=345110&r2=345111&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/warn-comma-operator.cpp (original) +++ cfe/trunk/test/SemaCXX/warn-comma-operator.cpp Tue Oct 23 19:07:41 2018 @@ -276,3 +276,13 @@ void test14() { // CHECK: fix-it:{{.*}}:{[[@LINE-7]]:33-[[@LINE-7]]:33}:"static_cast<void>(" // CHECK: fix-it:{{.*}}:{[[@LINE-8]]:46-[[@LINE-8]]:46}:")" } + +// PR39375 - test cast to void to silence warnings +template <typename T> +void test15() { + (void)42, 0; + static_cast<void>(42), 0; + + (void)T{}, 0; + static_cast<void>(T{}), 0; +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits