]> granicus.if.org Git - clang/commitdiff
[analyzer] MoveChecker: Squash the bit field because it causes a GCC warning.
authorArtem Dergachev <artem.dergachev@gmail.com>
Mon, 17 Dec 2018 21:07:38 +0000 (21:07 +0000)
committerArtem Dergachev <artem.dergachev@gmail.com>
Mon, 17 Dec 2018 21:07:38 +0000 (21:07 +0000)
The warning seems spurious (GCC bug 51242), but the bit field is
simply not worth the hassle.

rdar://problem/41349073

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@349394 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Checkers/MoveChecker.cpp

index 6436a6c6cba0f5f978931bceb20934719c65e4b2..6efa2dfbe5b476c9c6963259dc3d22e0e2ec5699 100644 (file)
@@ -63,9 +63,7 @@ public:
 
 private:
   enum MisuseKind { MK_FunCall, MK_Copy, MK_Move, MK_Dereference };
-  // This needs to be unsigned in order to avoid undefined behavior
-  // when putting it into a tight bitfield.
-  enum StdObjectKind : unsigned { SK_NonStd, SK_Unsafe, SK_Safe, SK_SmartPtr };
+  enum StdObjectKind { SK_NonStd, SK_Unsafe, SK_Safe, SK_SmartPtr };
 
   enum AggressivenessKind { // In any case, don't warn after a reset.
     AK_Invalid = -1,
@@ -81,9 +79,9 @@ private:
 
   struct ObjectKind {
     // Is this a local variable or a local rvalue reference?
-    bool IsLocal : 1;
+    bool IsLocal;
     // Is this an STL object? If so, of what kind?
-    StdObjectKind StdKind : 2;
+    StdObjectKind StdKind;
   };
 
   // STL smart pointers are automatically re-initialized to null when moved