================
Comment at: lib/StaticAnalyzer/Core/ExprEngine.cpp:1691
@@ +1690,3 @@
+      defaultIsFeasible = false;
+      break;
+    }
----------------
jordan_rose wrote:
> I don't think this `break` is correct. Cases are not guaranteed to be in 
> order.
Does the order really affect this code? The fact that DefaultSt is null means 
that all possible cases for switch were already covered (range-by-range), there 
is nothing left to consider and we can break out of loop. Or am I missed 
something?

================
Comment at: lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:604-605
@@ +603,4 @@
+                                            const llvm::APSInt& Adjustment) {
+  ProgramStateRef St1 = assumeSymLT(state, sym, From, Adjustment);
+  ProgramStateRef St2 = assumeSymGT(state, sym, To, Adjustment);
+  RangeSet Range1 = St1 ? GetRange(St1, sym) : F.getEmptySet();
----------------
jordan_rose wrote:
> These are expensive operations. Is it possible to do this at a lower level? 
> Or are there good reasons to do this extra work?
> 
> One reason I'm not so happy with this is that some day we could have 
> constraints on one symbol affect another symbol, but this doesn't preserve 
> that. Then again, neither would a lower-level solution.
Jordan, could you explain what do you mean here?
If you mean removing of creation of new states (creating ranges only), that 
could be done easily.
But it seems that you mean something else that I cannot understand correctly.
BTW, does the code in previous function need correction too?

http://reviews.llvm.org/D5102



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to