Author: xbolva00 Date: Mon Apr 29 16:24:00 2019 New Revision: 359516 URL: http://llvm.org/viewvc/llvm-project?rev=359516&view=rev Log: [Diagnostics] Support -Wtype-limits for GCC compatibility
Summary: GCC's -Wtype-limits (part of -Wextra): Warn if a comparison is always true or always false due to the limited range of the data type Reviewers: rsmith, aaron.ballman, lebedev.ri, thakis Reviewed By: rsmith Subscribers: lebedev.ri, jdoerfert, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D58841 Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td cfe/trunk/test/Sema/compare.c cfe/trunk/test/Sema/tautological-constant-compare.c cfe/trunk/test/Sema/tautological-constant-enum-compare.c cfe/trunk/test/SemaCXX/compare.cpp Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?rev=359516&r1=359515&r2=359516&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticGroups.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td Mon Apr 29 16:24:00 2019 @@ -485,6 +485,8 @@ def TautologicalInRangeCompare : DiagGro [TautologicalTypeLimitCompare, TautologicalUnsignedZeroCompare, TautologicalUnsignedEnumZeroCompare]>; +// For compatibility with GCC; -Wtype-limits = -Wtautological-constant-in-range-compare +def TypeLimits : DiagGroup<"type-limits", [TautologicalInRangeCompare]>; def TautologicalOutOfRangeCompare : DiagGroup<"tautological-constant-out-of-range-compare">; def TautologicalConstantCompare : DiagGroup<"tautological-constant-compare", [TautologicalOutOfRangeCompare]>; Modified: cfe/trunk/test/Sema/compare.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/compare.c?rev=359516&r1=359515&r2=359516&view=diff ============================================================================== --- cfe/trunk/test/Sema/compare.c (original) +++ cfe/trunk/test/Sema/compare.c Mon Apr 29 16:24:00 2019 @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -pedantic -verify -Wsign-compare -Wtautological-constant-in-range-compare %s -Wno-unreachable-code +// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -pedantic -verify -Wsign-compare -Wtype-limits %s -Wno-unreachable-code int test(char *C) { // nothing here should warn. return C != ((void*)0); Modified: cfe/trunk/test/Sema/tautological-constant-compare.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/tautological-constant-compare.c?rev=359516&r1=359515&r2=359516&view=diff ============================================================================== --- cfe/trunk/test/Sema/tautological-constant-compare.c (original) +++ cfe/trunk/test/Sema/tautological-constant-compare.c Mon Apr 29 16:24:00 2019 @@ -2,6 +2,8 @@ // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -Wtautological-constant-in-range-compare -DTEST -verify -x c++ %s // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -Wtautological-type-limit-compare -DTEST -verify %s // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -Wtautological-type-limit-compare -DTEST -verify -x c++ %s +// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -Wtype-limits -DTEST -verify %s +// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -Wtype-limits -DTEST -verify -x c++ %s // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -Wextra -Wno-sign-compare -verify %s // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -Wextra -Wno-sign-compare -verify -x c++ %s // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -Wall -verify %s Modified: cfe/trunk/test/Sema/tautological-constant-enum-compare.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/tautological-constant-enum-compare.c?rev=359516&r1=359515&r2=359516&view=diff ============================================================================== --- cfe/trunk/test/Sema/tautological-constant-enum-compare.c (original) +++ cfe/trunk/test/Sema/tautological-constant-enum-compare.c Mon Apr 29 16:24:00 2019 @@ -2,6 +2,8 @@ // RUN: %clang_cc1 -triple=x86_64-pc-win32 -fsyntax-only -DSIGNED -Wtautological-constant-in-range-compare -verify %s // RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -fsyntax-only -DUNSIGNED -DSILENCE -Wno-tautological-constant-compare -verify %s // RUN: %clang_cc1 -triple=x86_64-pc-win32 -fsyntax-only -DSIGNED -DSILENCE -Wno-tautological-constant-compare -verify %s +// RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -fsyntax-only -DUNSIGNED -Wtype-limits -verify %s +// RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -fsyntax-only -DUNSIGNED -DSILENCE -Wno-type-limits -verify %s int main() { enum A { A_a = 2 }; Modified: cfe/trunk/test/SemaCXX/compare.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/compare.cpp?rev=359516&r1=359515&r2=359516&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/compare.cpp (original) +++ cfe/trunk/test/SemaCXX/compare.cpp Mon Apr 29 16:24:00 2019 @@ -2,6 +2,7 @@ // on integer sizes. // RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -pedantic -verify -Wsign-compare -Wtautological-constant-in-range-compare -std=c++11 %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -pedantic -verify -Wsign-compare -Wtype-limits -std=c++11 %s int test0(long a, unsigned long b) { enum EnumA {A}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits