Skip to content

Conversation

@Kewen12
Copy link
Contributor

@Kewen12 Kewen12 commented Jan 2, 2026

@Kewen12 Kewen12 requested a review from nikic as a code owner January 2, 2026 20:55
@llvmbot llvmbot added llvm:instcombine Covers the InstCombine, InstSimplify and AggressiveInstCombine passes llvm:transforms labels Jan 2, 2026
@llvmbot
Copy link
Member

llvmbot commented Jan 2, 2026

@llvm/pr-subscribers-llvm-transforms

Author: Kewen Meng (Kewen12)

Changes

Reverts llvm/llvm-project#174176

Revert to unblock bots. https://lab.llvm.org/buildbot/#/builders/123/builds/32907


Full diff: https://github.com/llvm/llvm-project/pull/174242.diff

2 Files Affected:

  • (modified) llvm/lib/Transforms/InstCombine/InstCombineInternal.h (-25)
  • (modified) llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp (+23-48)
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
index 4f4023ce8616c..9bdd8cb71f7f3 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+++ b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
@@ -211,15 +211,6 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final
         Depth);
   }
 
-  KnownFPClass computeKnownFPClass(Value *Val, const APInt &DemandedElts,
-                                   FastMathFlags FMF,
-                                   FPClassTest Interested = fcAllFlags,
-                                   const Instruction *CtxI = nullptr,
-                                   unsigned Depth = 0) const {
-    return llvm::computeKnownFPClass(
-        Val, DemandedElts, FMF, Interested,
-        getSimplifyQuery().getWithInstruction(CtxI), Depth);
-  }
   KnownFPClass computeKnownFPClass(Value *Val,
                                    FPClassTest Interested = fcAllFlags,
                                    const Instruction *CtxI = nullptr,
@@ -228,14 +219,6 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final
         Val, Interested, getSimplifyQuery().getWithInstruction(CtxI), Depth);
   }
 
-  KnownFPClass computeKnownFPClass(Value *Val, const APInt &DemandedElts,
-                                   FPClassTest Interested = fcAllFlags,
-                                   const Instruction *CtxI = nullptr,
-                                   unsigned Depth = 0) const {
-    return llvm::computeKnownFPClass(
-        Val, DemandedElts, Interested,
-        getSimplifyQuery().getWithInstruction(CtxI), Depth);
-  }
   /// Check if fmul \p MulVal, +0.0 will yield +0.0 (or signed zero is
   /// ignorable).
   bool fmulByZeroIsZero(Value *MulVal, FastMathFlags FMF,
@@ -631,15 +614,7 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final
   Value *SimplifyDemandedUseFPClass(Value *V, FPClassTest DemandedMask,
                                     KnownFPClass &Known, Instruction *CxtI,
                                     unsigned Depth = 0);
-  Value *SimplifyDemandedUseFPClass(Value *V, const APInt &DemandedElts,
-                                    FPClassTest DemandedMask,
-                                    KnownFPClass &Known, Instruction *CxtI,
-                                    unsigned Depth = 0);
-  bool SimplifyDemandedFPClass(Instruction *I, unsigned Op,
-                               FPClassTest DemandedMask, KnownFPClass &Known,
-                               unsigned Depth = 0);
   bool SimplifyDemandedFPClass(Instruction *I, unsigned Op,
-                               const APInt &DemandedElts,
                                FPClassTest DemandedMask, KnownFPClass &Known,
                                unsigned Depth = 0);
 
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
index a9c759cbdbcba..3ad1caa6baa63 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
@@ -2033,23 +2033,12 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(Value *V,
                                                     KnownFPClass &Known,
                                                     Instruction *CxtI,
                                                     unsigned Depth) {
-  auto *FVTy = dyn_cast<FixedVectorType>(V->getType());
-  APInt DemandedElts =
-      FVTy ? APInt::getAllOnes(FVTy->getNumElements()) : APInt(1, 1);
-
-  return SimplifyDemandedUseFPClass(V, DemandedElts, DemandedMask, Known, CxtI,
-                                    Depth);
-}
-
-Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
-    Value *V, const APInt &DemandedElts, FPClassTest DemandedMask,
-    KnownFPClass &Known, Instruction *CxtI, unsigned Depth) {
   assert(Depth <= MaxAnalysisRecursionDepth && "Limit Search Depth");
   Type *VTy = V->getType();
 
   assert(Known == KnownFPClass() && "expected uninitialized state");
 
-  if (DemandedMask == fcNone || !DemandedElts)
+  if (DemandedMask == fcNone)
     return isa<UndefValue>(V) ? nullptr : PoisonValue::get(VTy);
 
   if (Depth == MaxAnalysisRecursionDepth)
@@ -2058,7 +2047,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
   Instruction *I = dyn_cast<Instruction>(V);
   if (!I) {
     // Handle constants and arguments
-    Known = computeKnownFPClass(V, DemandedElts, fcAllFlags, CxtI, Depth + 1);
+    Known = computeKnownFPClass(V, fcAllFlags, CxtI, Depth + 1);
 
     FPClassTest ValidResults = DemandedMask & Known.KnownFPClasses;
     if (ValidResults == fcNone)
@@ -2091,8 +2080,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
 
   switch (I->getOpcode()) {
   case Instruction::FNeg: {
-    if (SimplifyDemandedFPClass(I, 0, DemandedElts, llvm::fneg(DemandedMask),
-                                Known, Depth + 1))
+    if (SimplifyDemandedFPClass(I, 0, llvm::fneg(DemandedMask), Known,
+                                Depth + 1))
       return I;
     Known.fneg();
     break;
@@ -2101,22 +2090,19 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
     CallInst *CI = cast<CallInst>(I);
     switch (CI->getIntrinsicID()) {
     case Intrinsic::fabs:
-      if (SimplifyDemandedFPClass(I, 0, DemandedElts,
-                                  llvm::inverse_fabs(DemandedMask), Known,
+      if (SimplifyDemandedFPClass(I, 0, llvm::inverse_fabs(DemandedMask), Known,
                                   Depth + 1))
         return I;
       Known.fabs();
       break;
     case Intrinsic::arithmetic_fence:
-      if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, Known,
-                                  Depth + 1))
+      if (SimplifyDemandedFPClass(I, 0, DemandedMask, Known, Depth + 1))
         return I;
       break;
     case Intrinsic::copysign: {
       // Flip on more potentially demanded classes
       const FPClassTest DemandedMaskAnySign = llvm::unknown_sign(DemandedMask);
-      if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMaskAnySign,
-                                  Known, Depth + 1))
+      if (SimplifyDemandedFPClass(I, 0, DemandedMaskAnySign, Known, Depth + 1))
         return I;
 
       if ((DemandedMask & fcNegative) == DemandedMask) {
@@ -2131,8 +2117,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
         return I;
       }
 
-      KnownFPClass KnownSign = computeKnownFPClass(
-          I->getOperand(1), DemandedElts, fcAllFlags, CxtI, Depth + 1);
+      KnownFPClass KnownSign =
+          computeKnownFPClass(I->getOperand(1), fcAllFlags, CxtI, Depth + 1);
       Known.copysign(KnownSign);
       break;
     }
@@ -2184,8 +2170,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
 
       // TODO: This could really make use of KnownFPClass of specific value
       // range, (i.e., close enough to 1)
-      if (SimplifyDemandedFPClass(I, 0, DemandedElts, SrcDemandedMask, KnownSrc,
-                                  Depth + 1))
+      if (SimplifyDemandedFPClass(I, 0, SrcDemandedMask, KnownSrc, Depth + 1))
         return I;
 
       /// Propagate nnan-ness to simplify edge case checks.
@@ -2268,8 +2253,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
         KnownFPClass KnownSrc;
 
         // Simplify upstream operations before trying to simplify this call.
-        if (SimplifyDemandedFPClass(I, 0, DemandedElts, SrcDemandedMask,
-                                    KnownSrc, Depth + 1))
+        if (SimplifyDemandedFPClass(I, 0, SrcDemandedMask, KnownSrc, Depth + 1))
           return I;
 
         // Perform the canonicalization to see if this folded to a constant.
@@ -2295,8 +2279,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
       [[fallthrough]];
     }
     default:
-      Known =
-          computeKnownFPClass(I, DemandedElts, DemandedMask, CxtI, Depth + 1);
+      Known = computeKnownFPClass(I, DemandedMask, CxtI, Depth + 1);
       break;
     }
 
@@ -2304,10 +2287,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
   }
   case Instruction::Select: {
     KnownFPClass KnownLHS, KnownRHS;
-    if (SimplifyDemandedFPClass(I, 2, DemandedElts, DemandedMask, KnownRHS,
-                                Depth + 1) ||
-        SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, KnownLHS,
-                                Depth + 1))
+    if (SimplifyDemandedFPClass(I, 2, DemandedMask, KnownRHS, Depth + 1) ||
+        SimplifyDemandedFPClass(I, 1, DemandedMask, KnownLHS, Depth + 1))
       return I;
 
     if (KnownLHS.isKnownNever(DemandedMask))
@@ -2321,29 +2302,24 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
   }
   case Instruction::ExtractElement: {
     // TODO: Handle demanded element mask
-    if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, Known,
-                                Depth + 1))
+    if (SimplifyDemandedFPClass(I, 0, DemandedMask, Known, Depth + 1))
       return I;
     break;
   }
   case Instruction::InsertElement: {
     KnownFPClass KnownInserted, KnownVec;
-
-    if (SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, KnownInserted,
-                                Depth + 1) ||
-        SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, KnownVec,
-                                Depth + 1))
+    if (SimplifyDemandedFPClass(I, 1, DemandedMask, KnownInserted, Depth + 1) ||
+        SimplifyDemandedFPClass(I, 0, DemandedMask, KnownVec, Depth + 1))
       return I;
+
     // TODO: Use demanded elements logic from computeKnownFPClass
     Known = KnownVec | KnownInserted;
     break;
   }
   case Instruction::ShuffleVector: {
     KnownFPClass KnownLHS, KnownRHS;
-    if (SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, KnownRHS,
-                                Depth + 1) ||
-        SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, KnownLHS,
-                                Depth + 1))
+    if (SimplifyDemandedFPClass(I, 1, DemandedMask, KnownRHS, Depth + 1) ||
+        SimplifyDemandedFPClass(I, 0, DemandedMask, KnownLHS, Depth + 1))
       return I;
 
     // TODO: This is overly conservative and should consider demanded elements,
@@ -2352,7 +2328,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
     break;
   }
   default:
-    Known = computeKnownFPClass(I, DemandedElts, DemandedMask, CxtI, Depth + 1);
+    Known = computeKnownFPClass(I, DemandedMask, CxtI, Depth + 1);
     break;
   }
 
@@ -2360,13 +2336,12 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
 }
 
 bool InstCombinerImpl::SimplifyDemandedFPClass(Instruction *I, unsigned OpNo,
-                                               const APInt &DemandedElts,
                                                FPClassTest DemandedMask,
                                                KnownFPClass &Known,
                                                unsigned Depth) {
   Use &U = I->getOperandUse(OpNo);
-  Value *NewVal = SimplifyDemandedUseFPClass(U.get(), DemandedElts,
-                                             DemandedMask, Known, I, Depth);
+  Value *NewVal =
+      SimplifyDemandedUseFPClass(U.get(), DemandedMask, Known, I, Depth);
   if (!NewVal)
     return false;
   if (Instruction *OpInst = dyn_cast<Instruction>(U))

@Kewen12 Kewen12 merged commit 050c447 into main Jan 2, 2026
12 of 13 checks passed
@Kewen12 Kewen12 deleted the revert-174176-demanded-elts2 branch January 2, 2026 21:35
@llvm-ci
Copy link
Collaborator

llvm-ci commented Jan 2, 2026

LLVM Buildbot has detected a new failure on builder lldb-x86_64-debian running on lldb-x86_64-debian while building llvm at step 6 "test".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/162/builds/37893

Here is the relevant piece of the build log for the reference
Step 6 (test) failure: build (failure)
...
PASS: lldb-api :: tools/lldb-dap/stackTraceDisassemblyDisplay/TestDAP_stackTraceDisassemblyDisplay.py (293 of 3319)
PASS: lldb-api :: tools/lldb-dap/invalidated-event/TestDAP_invalidatedEvent.py (294 of 3319)
PASS: lldb-api :: functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py (295 of 3319)
PASS: lldb-api :: commands/expression/top-level/TestTopLevelExprs.py (296 of 3319)
PASS: lldb-api :: tools/lldb-dap/locations/TestDAP_locations.py (297 of 3319)
PASS: lldb-api :: tools/lldb-dap/stackTraceMissingModule/TestDAP_stackTraceMissingModule.py (298 of 3319)
PASS: lldb-shell :: SymbolFile/DWARF/debug-types-expressions.test (299 of 3319)
PASS: lldb-api :: tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py (300 of 3319)
PASS: lldb-api :: functionalities/process_group/TestChangeProcessGroup.py (301 of 3319)
PASS: lldb-api :: functionalities/scripted_process/TestScriptedProcess.py (302 of 3319)
FAIL: lldb-api :: tools/lldb-dap/output/TestDAP_output.py (303 of 3319)
******************** TEST 'lldb-api :: tools/lldb-dap/output/TestDAP_output.py' FAILED ********************
Script:
--
/usr/bin/python3 /home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/test/API/dotest.py -u CXXFLAGS -u CFLAGS --env LLVM_LIBS_DIR=/home/worker/2.0.1/lldb-x86_64-debian/build/./lib --env LLVM_INCLUDE_DIR=/home/worker/2.0.1/lldb-x86_64-debian/build/include --env LLVM_TOOLS_DIR=/home/worker/2.0.1/lldb-x86_64-debian/build/./bin --arch x86_64 --build-dir /home/worker/2.0.1/lldb-x86_64-debian/build/lldb-test-build.noindex --lldb-module-cache-dir /home/worker/2.0.1/lldb-x86_64-debian/build/lldb-test-build.noindex/module-cache-lldb/lldb-api --clang-module-cache-dir /home/worker/2.0.1/lldb-x86_64-debian/build/lldb-test-build.noindex/module-cache-clang/lldb-api --executable /home/worker/2.0.1/lldb-x86_64-debian/build/./bin/lldb --compiler /home/worker/2.0.1/lldb-x86_64-debian/build/./bin/clang --dsymutil /home/worker/2.0.1/lldb-x86_64-debian/build/./bin/dsymutil --make /usr/bin/gmake --llvm-tools-dir /home/worker/2.0.1/lldb-x86_64-debian/build/./bin --lldb-obj-root /home/worker/2.0.1/lldb-x86_64-debian/build/tools/lldb --lldb-libs-dir /home/worker/2.0.1/lldb-x86_64-debian/build/./lib --cmake-build-type Release -t /home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/test/API/tools/lldb-dap/output -p TestDAP_output.py
--
Exit Code: 1

Command Output (stdout):
--
lldb version 22.0.0git (https://github.com/llvm/llvm-project.git revision 050c447e301d3bcfd276132ce2454448fb5094f8)
  clang revision 050c447e301d3bcfd276132ce2454448fb5094f8
  llvm revision 050c447e301d3bcfd276132ce2454448fb5094f8
Skipping the following test categories: libc++, msvcstl, dsym, pdb, gmodules, debugserver, objc

--
Command Output (stderr):
--
Change dir to: /home/worker/2.0.1/lldb-x86_64-debian/llvm-project/lldb/test/API/tools/lldb-dap/output
runCmd: settings clear --all

output: 

runCmd: settings set symbols.enable-external-lookup false

output: 

runCmd: settings set target.inherit-tcc true

output: 

runCmd: settings set target.disable-aslr false

output: 

runCmd: settings set target.detach-on-error false

output: 


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

llvm:instcombine Covers the InstCombine, InstSimplify and AggressiveInstCombine passes llvm:transforms

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants