================
@@ -12367,8 +12368,17 @@ bool IntExprEvaluator::VisitBuiltinCallExpr(const 
CallExpr *E,
                            BuiltinOp != Builtin::BI__lzcnt &&
                            BuiltinOp != Builtin::BI__lzcnt64;
 
-    if (ZeroIsUndefined && !Val)
-      return Error(E);
+    if (!Val) {
----------------
nickdesaulniers wrote:

In that case:
```c++
case Builtin::BI__builtin_clzg:
case Builtin::BI__builtin_ctzg: {
  APSInt Val;
  if (!EvaluateInteger(E->getArg(0), Val, Info))
    return false;

  if (E->getNumArgs() == 1) {
    if (!Val)
      return Error(E);
    if (BuiltinOp == Builtin::BI__builtin_clzg)
      return Success(Val.countl_zero(), E);
    return Success(Val.countr_zero(), E);
  }

  if (!EvaluateInteger(E->getArg(1), Val, Info))
    return false;
  return Success(Val, E);

https://github.com/llvm/llvm-project/pull/86577
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to