[llvm] ValueTracking: Handle tracking nan through powi (PR #179311)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 5 06:33:37 PST 2026


================
@@ -675,9 +675,21 @@ KnownFPClass KnownFPClass::ldexp(const KnownFPClass &KnownSrc,
   return Known;
 }
 
+// TODO: Detect no-infinity cases
 KnownFPClass KnownFPClass::powi(const KnownFPClass &KnownSrc,
                                 const KnownBits &ExponentKnownBits) {
   KnownFPClass Known;
+  Known.propagateNaN(KnownSrc);
+
+  if (ExponentKnownBits.isZero()) {
+    // powi(QNaN, 0) returns 1.0, and powi(SNaN, 0) may non-deterministically
+    // return 1.0 or a NaN.
+    FPClassTest PossibleVals =
+        KnownSrc.isKnownNever(fcSNan) ? fcPosNormal | fcNan : fcPosNormal;
----------------
arsenm wrote:

This was right the first time 

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


More information about the llvm-commits mailing list