[llvm] Revert "Add HexagonGlobalScheduler pass (#180803)" (PR #181418)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 13 12:51:12 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-hexagon
Author: Fateme Hosseini (fhossein-quic)
<details>
<summary>Changes</summary>
This reverts commit 892ac614bf8fafd4d13381bb45b369721309785a.
---
Patch is 329.51 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/181418.diff
16 Files Affected:
- (modified) llvm/lib/Target/Hexagon/CMakeLists.txt (-1)
- (modified) llvm/lib/Target/Hexagon/Hexagon.h (-2)
- (removed) llvm/lib/Target/Hexagon/HexagonGlobalScheduler.cpp (-5319)
- (modified) llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp (-19)
- (modified) llvm/lib/Target/Hexagon/HexagonRegisterInfo.h (-10)
- (modified) llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp (+1-6)
- (modified) llvm/test/CodeGen/Hexagon/autohvx/hfsplat.ll (+2-1)
- (removed) llvm/test/CodeGen/Hexagon/avoid-debug-increment.mir (-311)
- (modified) llvm/test/CodeGen/Hexagon/cext-check.ll (+1-1)
- (removed) llvm/test/CodeGen/Hexagon/dbg-label-pullup.ll (-305)
- (removed) llvm/test/CodeGen/Hexagon/global-sched-skip-vsub_fake.ll (-831)
- (removed) llvm/test/CodeGen/Hexagon/pull-delayed-new.mir (-268)
- (removed) llvm/test/CodeGen/Hexagon/pull-no-comp-code.ll (-91)
- (removed) llvm/test/CodeGen/Hexagon/pull-up-dbg-label.mir (-144)
- (removed) llvm/test/CodeGen/Hexagon/pull-up-slots.mir (-363)
- (removed) llvm/test/CodeGen/Hexagon/pull-up.ll (-39)
``````````diff
diff --git a/llvm/lib/Target/Hexagon/CMakeLists.txt b/llvm/lib/Target/Hexagon/CMakeLists.txt
index b4716693c3dc9..bd87b9c894292 100644
--- a/llvm/lib/Target/Hexagon/CMakeLists.txt
+++ b/llvm/lib/Target/Hexagon/CMakeLists.txt
@@ -39,7 +39,6 @@ add_llvm_target(HexagonCodeGen
HexagonGenMux.cpp
HexagonGenPredicate.cpp
HexagonGlobalRegion.cpp
- HexagonGlobalScheduler.cpp
HexagonLiveVariables.cpp
HexagonHardwareLoops.cpp
HexagonHazardRecognizer.cpp
diff --git a/llvm/lib/Target/Hexagon/Hexagon.h b/llvm/lib/Target/Hexagon/Hexagon.h
index 1db2326b274dc..b3be89abd527b 100644
--- a/llvm/lib/Target/Hexagon/Hexagon.h
+++ b/llvm/lib/Target/Hexagon/Hexagon.h
@@ -41,7 +41,6 @@ void initializeHexagonEarlyIfConversionPass(PassRegistry &);
void initializeHexagonExpandCondsetsPass(PassRegistry &);
void initializeHexagonGenMemAbsolutePass(PassRegistry &);
void initializeHexagonGenMuxPass(PassRegistry &);
-void initializeHexagonGlobalSchedulerPass(PassRegistry &);
void initializeHexagonHardwareLoopsPass(PassRegistry &);
void initializeHexagonLiveVariablesPass(PassRegistry &);
void initializeHexagonLoopIdiomRecognizeLegacyPassPass(PassRegistry &);
@@ -95,7 +94,6 @@ FunctionPass *createHexagonGenInsert();
FunctionPass *createHexagonGenMemAbsolute();
FunctionPass *createHexagonGenMux();
FunctionPass *createHexagonGenPredicate();
-FunctionPass *createHexagonGlobalScheduler();
FunctionPass *createHexagonHardwareLoops();
FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM,
CodeGenOptLevel OptLevel);
diff --git a/llvm/lib/Target/Hexagon/HexagonGlobalScheduler.cpp b/llvm/lib/Target/Hexagon/HexagonGlobalScheduler.cpp
deleted file mode 100644
index 092d07431e253..0000000000000
--- a/llvm/lib/Target/Hexagon/HexagonGlobalScheduler.cpp
+++ /dev/null
@@ -1,5319 +0,0 @@
-
-//===----- HexagonGlobalScheduler.cpp - Global Scheduler ------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// Basic infrastructure for the global scheduling + Hexagon pull-up pass.
-// Currently run at the very end of code generation for Hexagon, cleans
-// up lost scheduling opportunities. Currently breaks liveness, so no passes
-// that rely on liveness info should run afterwards. Will be fixed in future
-// versions.
-//
-//===----------------------------------------------------------------------===//
-#include "Hexagon.h"
-#include "HexagonGlobalRegion.h"
-#include "HexagonMachineFunctionInfo.h"
-#include "HexagonRegisterInfo.h"
-#include "HexagonSubtarget.h"
-#include "HexagonTargetMachine.h"
-#include "HexagonVLIWPacketizer.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/SmallSet.h"
-#include "llvm/ADT/Statistic.h"
-#include "llvm/Analysis/AliasAnalysis.h"
-#include "llvm/Analysis/ValueTracking.h"
-#include "llvm/CodeGen/DFAPacketizer.h"
-#include "llvm/CodeGen/LatencyPriorityQueue.h"
-#include "llvm/CodeGen/LiveIntervals.h"
-#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
-#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
-#include "llvm/CodeGen/MachineDominators.h"
-#include "llvm/CodeGen/MachineFrameInfo.h"
-#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/CodeGen/MachineInstrBuilder.h"
-#include "llvm/CodeGen/MachineLoopInfo.h"
-#include "llvm/CodeGen/MachineRegisterInfo.h"
-#include "llvm/CodeGen/Passes.h"
-#include "llvm/CodeGen/PseudoSourceValue.h"
-#include "llvm/CodeGen/SchedulerRegistry.h"
-#include "llvm/CodeGen/TargetInstrInfo.h"
-#include "llvm/CodeGen/TargetRegisterInfo.h"
-#include "llvm/CodeGen/TargetSchedule.h"
-#include "llvm/IR/Operator.h"
-#include "llvm/InitializePasses.h"
-#include "llvm/MC/MCInstrItineraries.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/Debug.h"
-#include "llvm/Support/MathExtras.h"
-#include "llvm/Target/TargetMachine.h"
-#include "llvm/Transforms/Utils/BasicBlockUtils.h"
-
-#include <list>
-#include <map>
-
-#define DEBUG_TYPE "global_sched"
-
-using namespace llvm;
-
-STATISTIC(HexagonNumPullUps, "Number of instructions pull-ups");
-STATISTIC(HexagonNumDualJumps, "Number of dual jumps formed");
-
-static cl::opt<bool> DisablePullUp("disable-pull-up", cl::Hidden,
- cl::desc("Disable Hexagon pull-up pass"));
-
-static cl::opt<bool> EnableSpeculativePullUp(
- "enable-speculative-pull-up", cl::Hidden,
- cl::desc("Enable speculation during Hexagon pull-up pass"));
-
-static cl::opt<bool> EnableLocalPullUp(
- "enable-local-pull-up", cl::Hidden, cl::init(true),
- cl::desc("Enable same BB pull during Hexagon pull-up pass"));
-
-static cl::opt<bool> AllowSpeculateLoads(
- "speculate-loads-on-pull-up", cl::Hidden, cl::init(true),
- cl::desc("Allow speculative loads during Hexagon pull-up pass"));
-
-static cl::opt<bool> AllowCmpBranchLoads(
- "cmp-branch-loads-pull-up", cl::Hidden, cl::init(true),
- cl::desc("Allow compare-branch loads during Hexagon pull-up pass"));
-
-static cl::opt<bool> AllowUnlikelyPath("unlikely-path-pull-up", cl::Hidden,
- cl::init(true),
- cl::desc("Allow unlikely path pull up"));
-
-static cl::opt<bool>
- PerformDualJumps("dual-jump-in-pull-up", cl::Hidden, cl::init(true),
- cl::desc("Perform dual jump formation during pull up"));
-
-static cl::opt<bool> AllowDependentPullUp(
- "enable-dependent-pull-up", cl::Hidden, cl::init(true),
- cl::desc("Perform dual jump formation during pull up"));
-
-static cl::opt<bool>
- AllowBBPeelPullUp("enable-bb-peel-pull-up", cl::Hidden, cl::init(true),
- cl::desc("Peel a reg copy out of a BBloop"));
-
-static cl::opt<bool> PreventCompoundSeparation(
- "prevent-compound-separation", cl::Hidden,
- cl::desc("Do not destroy existing compounds during pull up"));
-
-static cl::opt<bool> PreventDuplexSeparation(
- "prevent-duplex-separation", cl::Hidden, cl::init(true),
- cl::desc("Do not destroy existing duplexes during pull up"));
-
-static cl::opt<unsigned> MainCandidateQueueSize("pull-up-main-queue-size",
- cl::Hidden, cl::init(8));
-
-static cl::opt<unsigned> SecondaryCandidateQueueSize("pull-up-sec-queue-size",
- cl::Hidden, cl::init(2));
-
-static cl::opt<bool> PostPullUpOpt(
- "post-pull-up-opt", cl::Hidden, cl::Optional, cl::init(true),
- cl::desc("Enable opt. exposed by pull-up e.g., remove redundant jumps"));
-
-static cl::opt<bool> SpeculateNonPredInsn(
- "speculate-non-pred-insn", cl::Hidden, cl::Optional, cl::init(true),
- cl::desc("Speculate non-predicable instructions in parent BB"));
-
-static cl::opt<bool>
- DisableCheckBundles("disable-hexagon-check-bundles", cl::Hidden,
- cl::init(true),
- cl::desc("Disable Hexagon check bundles pass"));
-
-static cl::opt<bool>
- WarnOnBundleSize("warn-on-bundle-size", cl::Hidden,
- cl::desc("Hexagon check bundles and warn on size"));
-
-static cl::opt<bool>
- ForceNoopHazards("force-noop-hazards", cl::Hidden, cl::init(false),
- cl::desc("Force noop hazards in scheduler"));
-static cl::opt<bool> OneFloatPerPacket(
- "single-float-packet", cl::Hidden,
- cl::desc("Allow only one single floating point instruction in a packet"));
-static cl::opt<bool> OneComplexPerPacket(
- "single-complex-packet", cl::Hidden,
- cl::desc("Allow only one complex instruction in a packet"));
-
-namespace llvm {
-FunctionPass *createHexagonGlobalScheduler();
-void initializeHexagonGlobalSchedulerPass(PassRegistry &);
-} // namespace llvm
-
-namespace {
-class HexagonGlobalSchedulerImpl;
-
-class HexagonGlobalScheduler : public MachineFunctionPass {
-public:
- static char ID;
- HexagonGlobalScheduler() : MachineFunctionPass(ID) {
- initializeHexagonGlobalSchedulerPass(*PassRegistry::getPassRegistry());
- }
-
- void getAnalysisUsage(AnalysisUsage &AU) const override {
- AU.addRequiredID(MachineDominatorsID);
- AU.addRequired<MachineLoopInfoWrapperPass>();
- AU.addRequired<AAResultsWrapperPass>();
- AU.addRequired<MachineBranchProbabilityInfoWrapperPass>();
- AU.addRequired<MachineBlockFrequencyInfoWrapperPass>();
- AU.addRequired<MachineDominatorTreeWrapperPass>();
- MachineFunctionPass::getAnalysisUsage(AU);
- }
-
- StringRef getPassName() const override { return "Hexagon Global Scheduler"; }
-
- bool runOnMachineFunction(MachineFunction &Fn) override;
-};
-char HexagonGlobalScheduler::ID = 0;
-
-// Describes a single pull-up candidate.
-class PullUpCandidate {
- MachineBasicBlock::instr_iterator CandidateLocation;
- MachineBasicBlock::iterator HomeBundle;
- bool DependentOp;
- signed BenefitCost;
- std::vector<MachineInstr *> Backtrack;
-
-public:
- PullUpCandidate(MachineBasicBlock::instr_iterator MII) {
- CandidateLocation = MII;
- BenefitCost = 0;
- }
-
- PullUpCandidate(MachineBasicBlock::instr_iterator MII,
- MachineBasicBlock::iterator HomeBundle,
- std::vector<MachineInstr *> &backtrack, bool DependentOp,
- signed Cost)
- : CandidateLocation(MII), HomeBundle(HomeBundle),
- DependentOp(DependentOp), BenefitCost(Cost) {
- // Copy of the backtrack.
- Backtrack = backtrack;
- }
-
- void populate(MachineBasicBlock::instr_iterator &MII,
- MachineBasicBlock::iterator &WorkPoint,
- std::vector<MachineInstr *> &backtrack, bool &dependentOp) {
- MII = CandidateLocation;
- WorkPoint = HomeBundle;
- backtrack = Backtrack;
- dependentOp = DependentOp;
- }
-
- signed getCost() { return BenefitCost; }
-
- MachineInstr *getCandidate() { return &*CandidateLocation; }
-
- void dump() {
- dbgs() << "Cost(" << BenefitCost;
- dbgs() << ") Dependent(" << DependentOp;
- dbgs() << ") backtrack size(" << Backtrack.size() << ")\t";
- CandidateLocation->dump();
- }
-};
-
-/// PullUpCandidateSorter - A Sort utility for pull-up candidates.
-struct PullUpCandidateSorter {
- PullUpCandidateSorter() {}
- bool operator()(PullUpCandidate *LHS, PullUpCandidate *RHS) {
- return LHS->getCost() > RHS->getCost();
- }
-};
-
-// Describes a single pull-up opportunity: location to which
-// pull-up is possible with additional information about it.
-// Also contains a list of pull-up candidates for this location.
-class PullUpState {
- friend class HexagonGlobalSchedulerImpl;
- // Available opportunity for pull-up.
- // FAIAP a bundle with an empty slot.
- MachineBasicBlock::iterator HomeLocation;
- // Home bundle copy. This is here for speed of iteration.
- SmallVector<MachineInstr *, HEXAGON_PACKET_SIZE> HomeBundle;
- // Multiple candidates for the Home location.
- SmallVector<PullUpCandidate *, 8> PullUpCandidates;
-
- const HexagonInstrInfo *QII;
-
-public:
- PullUpState(const HexagonInstrInfo *QII) : HomeLocation(NULL), QII(QII) {}
-
- ~PullUpState() { reset(); }
-
- void addPullUpCandidate(MachineBasicBlock::instr_iterator MII,
- MachineBasicBlock::iterator HomeBundle,
- std::vector<MachineInstr *> &backtrack,
- bool DependentOp, signed Cost) {
- LLVM_DEBUG(dbgs() << "\t[addPullUpCandidate]: "; (*MII).dump());
- PullUpCandidate *PUI =
- new PullUpCandidate(MII, HomeBundle, backtrack, DependentOp, Cost);
- PullUpCandidates.push_back(PUI);
- }
-
- void dump() {
- unsigned element = 0;
- for (unsigned i = 0; i < HomeBundle.size(); i++) {
- dbgs() << "[" << element++;
- dbgs() << "] Home Duplex("
- << QII->getDuplexCandidateGroup(*HomeBundle[i]);
- dbgs() << ") Compound (" << QII->getCompoundCandidateGroup(*HomeBundle[i])
- << ") ";
- HomeBundle[i]->dump();
- }
- dbgs() << "\n";
- element = 0;
- for (SmallVector<PullUpCandidate *, 4>::iterator
- I = PullUpCandidates.begin(),
- E = PullUpCandidates.end();
- I != E; ++I) {
- dbgs() << "[" << element++ << "] Cand: Compound(";
- dbgs() << QII->getCompoundCandidateGroup(*(*I)->getCandidate()) << ") ";
- (*I)->dump();
- }
- }
-
- void reset() {
- HomeLocation = NULL;
- for (SmallVector<PullUpCandidate *, 4>::iterator
- I = PullUpCandidates.begin(),
- E = PullUpCandidates.end();
- I != E; ++I)
- delete *I;
- PullUpCandidates.clear();
- HomeBundle.clear();
- }
-
- void addHomeLocation(MachineBasicBlock::iterator WorkPoint) {
- reset();
- HomeLocation = WorkPoint;
- }
-
- unsigned haveCandidates() { return PullUpCandidates.size(); }
-};
-
-class HexagonGlobalSchedulerImpl : public HexagonPacketizerList {
- // List of PullUp regions for this function.
- std::vector<BasicBlockRegion *> PullUpRegions;
- // Map of approximate distance for each BB from the
- // function base.
- DenseMap<MachineBasicBlock *, unsigned> BlockToInstOffset;
- // Keep track of multiple pull-up candidates.
- PullUpState CurrentState;
- // Empty basic blocks as a result of pull-up.
- std::vector<MachineBasicBlock *> EmptyBBs;
- // Save all the Speculated MachineInstr that were moved
- // FROM MachineBasicBlock because we don't want to have
- // more than one speculated instructions pulled into one packet.
- // TODO: This can be removed once we have a use-def dependency chain
- // for all the instructions in a function.
- std::map<MachineInstr *, MachineBasicBlock *> SpeculatedIns;
- // All the regs and their aliases used by an instruction.
- std::map<MachineInstr *, std::vector<unsigned>> MIUseSet;
- // All the regs and their aliases defined by an instruction.
- std::map<MachineInstr *, std::vector<unsigned>> MIDefSet;
-
- AliasAnalysis *AA;
- const MachineBranchProbabilityInfo *MBPI;
- const MachineBlockFrequencyInfo *MBFI;
- const MachineRegisterInfo *MRI;
- const MachineFrameInfo &MFI;
- const HexagonRegisterInfo *QRI;
- const HexagonInstrInfo *QII;
- MachineLoopInfo &MLI;
- MachineDominatorTree &MDT;
- MachineInstrBuilder Ext;
- MachineInstrBuilder Nop;
- const unsigned PacketSize;
- TargetSchedModel TSchedModel;
-
-public:
- // Ctor.
- HexagonGlobalSchedulerImpl(MachineFunction &MF, MachineLoopInfo &MLI,
- MachineDominatorTree &MDT, AliasAnalysis *AA,
- const MachineBranchProbabilityInfo *MBPI,
- const MachineBlockFrequencyInfo *MBFI,
- const MachineRegisterInfo *MRI,
- const MachineFrameInfo &MFI,
- const HexagonRegisterInfo *QRI);
- HexagonGlobalSchedulerImpl(const HexagonGlobalSchedulerImpl &) = delete;
- HexagonGlobalSchedulerImpl &
- operator=(const HexagonGlobalSchedulerImpl &) = delete;
-
- ~HexagonGlobalSchedulerImpl() {
- // Free regions.
- for (std::vector<BasicBlockRegion *>::iterator I = PullUpRegions.begin(),
- E = PullUpRegions.end();
- I != E; ++I)
- delete *I;
- MF.deleteMachineInstr(Ext);
- MF.deleteMachineInstr(Nop);
- }
-
- // initPacketizerState - initialize some internal flags.
- void initPacketizerState() override;
-
- // ignorePseudoInstruction - Ignore bundling of pseudo instructions.
- bool ignoreInstruction(MachineInstr *MI);
-
- // isSoloInstruction - return true if instruction MI can not be packetized
- // with any other instruction, which means that MI itself is a packet.
- bool isSoloInstruction(const MachineInstr &MI) override;
-
- // Add MI to packetizer state. Returns false if it cannot fit in the packet.
- bool incrementalAddToPacket(MachineInstr &MI);
-
- // formPullUpRegions - Top level call to form regions.
- bool formPullUpRegions(MachineFunction &Fn);
-
- // performPullUp - Top level call for pull-up.
- bool performPullUp();
-
- // performPullUpCFG - Top level call for pull-up CFG.
- bool performPullUpCFG(MachineFunction &Fn);
-
- // performExposedOptimizations -
- // Look for optimization opportunities after pullup.
- bool performExposedOptimizations(MachineFunction &Fn);
-
- // optimizeBranching -
- // 1. A conditional-jump transfers control to a BB with
- // jump as the only instruction.
- // if(p0) jump t1
- // // ...
- // t1: jump t2
- // 2. When a BB with a single conditional jump, jumps to succ-of-succ and
- // falls-through BB with only jump instruction.
- // { if(p0) jump t1 }
- // { jump t2 }
- // t1: { ... }
- MachineBasicBlock *optimizeBranches(MachineBasicBlock *MBB,
- MachineBasicBlock *TBB,
- MachineInstr *FirstTerm,
- MachineBasicBlock *FBB);
-
- // removeRedundantBranches -
- // 1. Remove jump to the layout successor.
- // 2. Remove multiple (dual) jump to the same target.
- bool removeRedundantBranches(MachineBasicBlock *MBB, MachineBasicBlock *TBB,
- MachineInstr *FirstTerm, MachineBasicBlock *FBB,
- MachineInstr *SecondTerm);
-
- // optimizeDualJumps - optimize dual jumps in a packet
- // For now: Replace dual jump by single jump in case of a fall through.
- bool optimizeDualJumps(MachineBasicBlock *MBB, MachineBasicBlock *TBB,
- MachineInstr *FirstTerm, MachineBasicBlock *FBB,
- MachineInstr *SecondTerm);
-
- void GenUseDefChain(MachineFunction &Fn);
-
- // Return region pointer or null if none found.
- BasicBlockRegion *getRegionForMBB(std::vector<BasicBlockRegion *> &Regions,
- MachineBasicBlock *MBB);
-
- // Saves all the used-regs and their aliases in Uses.
- // Saves all the defined-regs and their aliases in Defs.
- void MIUseDefSet(MachineInstr *MI, std::vector<unsigned> &Defs,
- std::vector<unsigned> &Uses);
-
- // This is a very useful debug utility.
- unsigned countCompounds(MachineFunction &Fn);
-
- // Check bundle counts
- void checkBundleCounts(MachineFunction &Fn);
-
-private:
- // Get next BB to be included into the region.
- MachineBasicBlock *getNextPURBB(MachineBasicBlock *MBB, bool SecondBest);
-
- void setUsedRegs(BitVector &Set, unsigned Reg);
- bool AliasingRegs(unsigned RegA, unsigned RegB);
-
- // Test is true if the two MIs cannot be safely reordered.
- bool ReorderDependencyTest(MachineInstr *MIa, MachineInstr *MIb);
-
- bool canAddMIToThisPacket(
- MachineInstr *MI,
- SmallVector<MachineInstr *, HEXAGON_PACKET_SIZE> &Bundle);
-
- bool CanPromoteToDotNew(MachineInstr *MI, unsigned Reg);
-
- bool pullUpPeelBBLoop(MachineBasicBlock *PredBB, MachineBasicBlock *LoopBB);
-
- MachineInstr *findBundleAndBranch(MachineBasicBlock *BB,
- MachineBasicBlock::iterator &Bundle);
-
- // Does this bundle have any slots left?
- bool ResourcesAvailableInBundle(BasicBlockRegion *CurrentRegion,
- MachineBasicBlock::iterator &TargetPacket);
-
- // Perform the actual move.
- MachineInstr *MoveAndUpdateLiveness(
- BasicBlockRegion *CurrentRegion, MachineBasicBlock *HomeBB,
- MachineInstr *InstrToMove, bool NeedToNewify, unsigned DepReg,
- bool MovingDependentOp, MachineBasicBlock *OriginBB,
- MachineInstr *OriginalInstruction, SmallVector<MachineOperand, 4> &Cond,
- MachineBasicBlock::iterator &SourceLocation,
- MachineBasicBlock::iterator &TargetPacket,
- MachineBasicBlock::iterator &NextMI,
- std::vector<MachineInstr *> &backtrack);
-
- // Updates incremental kill patterns along the backtrack.
- void updateKillAlongThePath(MachineBasicBlock *HomeBB,
- MachineBasicBlock *OriginBB,
- MachineBasicBlock::instr_iterator &Head,
- MachineBasicBlock::instr_iterator &Tail,
- MachineBasicBlock::iterator &SourcePacket,
- MachineBasicBlock::iterator &T...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/181418
More information about the llvm-commits
mailing list