================
@@ -199,6 +233,19 @@ static bool CanElideOverflowCheck(const ASTContext &Ctx, 
const BinOpInfo &Op) {
   if (!Op.mayHaveIntegerOverflow())
     return true;
 
+  const UnaryOperator *UO = dyn_cast<UnaryOperator>(Op.E);
+  if (UO && Ctx.isUnaryOverflowPatternExcluded(UO))
+    return true;
+
+  const auto *BO = dyn_cast<BinaryOperator>(Op.E);
+  if (BO && BO->hasExcludedOverflowPattern())
----------------
kees wrote:

I can see the inconsistency from the perspective of "command line options 
should be global", but my thinking on it is that the pattern exclusion 
heuristics are to help solve corner cases of the language globally that even 
OBT can't solve. So I want the heuristics taking precedence (and I should note 
I'm biased: we need this precedence in Linux or we won't get some of the core 
developers on board with using OBTs). Other command line options like `-fwrapv` 
apply to "legacy" types only, so those, for example, don't override OBTs.

And if someone shows up and says "I want OBTs to take precedence", then we can 
add some "strict" cmdline option for that case, but I think for now this is 
good as-is.

https://github.com/llvm/llvm-project/pull/148914
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to