[llvm] [ValueTracking] Fix assertion failure when `computeKnownFPClass` returns fcNone (PR #92355)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Thu May 16 01:14:14 PDT 2024


================
@@ -1126,8 +1126,13 @@ static void computeKnownBitsFromOperator(const Operator *I,
       KnownFPClass Result = computeKnownFPClass(V, fcAllFlags, Depth + 1, Q);
       FPClassTest FPClasses = Result.KnownFPClasses;
 
-      if (FPClasses != fcNone &&
-          Result.isKnownNever(fcNormal | fcSubnormal | fcNan)) {
+      // Treat it as zero if the use of I is unreachable.
+      if (FPClasses == fcNone) {
+        Known.setAllZero();
+        break;
+      }
----------------
arsenm wrote:

It's probably OK as long as we handle undef correctly inside computeKnownFPClass, the contradictory paths implies UB happened somewhere 

https://github.com/llvm/llvm-project/pull/92355


More information about the llvm-commits mailing list