[clang] 94b9187 - [Clang] Fix a Wbitfield-enum-conversion warning in DirectoryLookup.h

Shivam Gupta via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 23 10:18:33 PST 2023


Author: Shivam Gupta
Date: 2023-01-23T23:48:48+05:30
New Revision: 94b9187a7d37e4269af35f8f7ec8e0f78fd6a06e

URL: https://github.com/llvm/llvm-project/commit/94b9187a7d37e4269af35f8f7ec8e0f78fd6a06e
DIFF: https://github.com/llvm/llvm-project/commit/94b9187a7d37e4269af35f8f7ec8e0f78fd6a06e.diff

LOG: [Clang] Fix a Wbitfield-enum-conversion warning in DirectoryLookup.h

When compiling clang/Lex/DirectoryLookup.h with option -Wbitfield-enum-conversion, we get the following warning:

DirectoryLookup.h:77:17: warning:
      bit-field 'DirCharacteristic' is not wide enough to store all enumerators of
      'CharacteristicKind' [-Wbitfield-enum-conversion]
      : u(Map), DirCharacteristic(DT), LookupType(LT_HeaderMap),

DirCharacteristic is a bitfield with 2 bits (4 values)
  /// DirCharacteristic - The type of directory this is: this is an instance of
  /// SrcMgr::CharacteristicKind.
  unsigned DirCharacteristic : 2;

Whereas SrcMgr::CharacterKind is an enum with 5 values:
enum CharacteristicKind {
  C_User,
  C_System,
  C_ExternCSystem,
  C_User_ModuleMap,
  C_System_ModuleMap
};

Solution is to increase DirCharacteristic bitfield from 2 to 3.
Patch by Dimitri van Heesch

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D142304

Added: 
    

Modified: 
    clang/include/clang/Lex/DirectoryLookup.h

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Lex/DirectoryLookup.h b/clang/include/clang/Lex/DirectoryLookup.h
index 99f7c507c53e0..d668a830db38f 100644
--- a/clang/include/clang/Lex/DirectoryLookup.h
+++ b/clang/include/clang/Lex/DirectoryLookup.h
@@ -50,7 +50,7 @@ class DirectoryLookup {
 
   /// DirCharacteristic - The type of directory this is: this is an instance of
   /// SrcMgr::CharacteristicKind.
-  unsigned DirCharacteristic : 2;
+  unsigned DirCharacteristic : 3;
 
   /// LookupType - This indicates whether this DirectoryLookup object is a
   /// normal directory, a framework, or a headermap.


        


More information about the cfe-commits mailing list