NoQ added inline comments.

================
Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:503
+
+  if (!BinaryOperator::isBitwiseOrShiftOp(SIE->getOpcode()))
+    return State;
----------------
I suspect we have problems with bitwise OR here, which (unlike other 
bitwise/shift ops) may be true when the LHS is 0.


================
Comment at: clang/test/Analysis/bitwise-ranges.cpp:16
+  unsigned int A = X | 8;
+  clang_analyzer_eval((A > 0 && A < 0) || A == 0);
+  // expected-warning@-1 {{FALSE}}
----------------
The LHS of || is always false here, regardless of the value of `A` or 
constraints on it. This test tests something strange.


================
Comment at: clang/test/Analysis/bitwise-ranges.cpp:24
+  unsigned int C = X & 1;
+  clang_analyzer_eval((C >= 1 && C <= 1) || C == 0);
+  // expected-warning@-1 {{TRUE}}
----------------
The LHS of || is equivalent to `C == 1`.


================
Comment at: clang/test/Analysis/bitwise-ranges.cpp:28
+  unsigned int D = X << 1;
+  clang_analyzer_eval((D >= 1 && D <= 4294967295) || D == 0);
+  // expected-warning@-1 {{TRUE}}
----------------
This check is trivially true regardless of the value of D or constraints on it.


================
Comment at: clang/test/Analysis/bitwise-ranges.cpp:32
+  unsigned int E = X >> 1;
+  clang_analyzer_eval((E >= 1 && E <= 4294967295) || E == 0);
+  // expected-warning@-1 {{TRUE}}
----------------
Same here.


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

https://reviews.llvm.org/D65239



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

Reply via email to