haowei added a comment.

There are also cases that this clang type-limit check will warn when checking 
if a enum type is larger than 0. For example, we are seeing warnings on ICU 
source code 
(https://github.com/unicode-org/icu/blob/8d5a97ae0f49f6974372736ca67db15c37522f6f/icu4c/source/i18n/displayoptions.cpp#L79)
 after this patch was landed.

  U_CAPI const char * U_EXPORT2
  udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase 
grammaticalCase) {
      if (grammaticalCase >= 0 && grammaticalCase < 
UPRV_LENGTHOF(grammaticalCaseIds)) {
          return grammaticalCaseIds[grammaticalCase];
      }
  
      return grammaticalCaseIds[0];
  }

grammaticalCase is a enum. And whether enum type is unsigned or not does not 
seem to be strictly defined in C/C++ standard, it ups to the compiler to decide 
how enum type should be defined. In that case, this check is legit and 
shouldn't trigger an warning.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142826/new/

https://reviews.llvm.org/D142826

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to