[llvm] [CycleInfo] Support forward declarations (PR #187029)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 17 07:21:54 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-ir
Author: Nikita Popov (nikic)
<details>
<summary>Changes</summary>
Use a class instead of an alias, so that CycleInfo can be forward-declared.
We can't do the same for Cycle without further changes (a LoopInfo like CRTP scheme).
---
Full diff: https://github.com/llvm/llvm-project/pull/187029.diff
4 Files Affected:
- (modified) llvm/include/llvm/IR/CycleInfo.h (+3-1)
- (modified) llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Utils/ControlFlowUtils.h (-1)
- (modified) llvm/lib/Transforms/Utils/BasicBlockUtils.cpp (+1)
``````````diff
diff --git a/llvm/include/llvm/IR/CycleInfo.h b/llvm/include/llvm/IR/CycleInfo.h
index 79867fe3a043d..bf719fdfe9693 100644
--- a/llvm/include/llvm/IR/CycleInfo.h
+++ b/llvm/include/llvm/IR/CycleInfo.h
@@ -20,7 +20,9 @@
namespace llvm {
-using CycleInfo = GenericCycleInfo<SSAContext>;
+// Use class instead of using to allow forward declarations.
+class CycleInfo : public GenericCycleInfo<SSAContext> {};
+
using Cycle = CycleInfo::CycleT;
} // namespace llvm
diff --git a/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h b/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
index 460dcdd8a2c00..06307961cb95d 100644
--- a/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
+++ b/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
@@ -19,7 +19,6 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/IR/BasicBlock.h"
-#include "llvm/IR/CycleInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Printable.h"
@@ -27,6 +26,7 @@
namespace llvm {
class CondBrInst;
+class CycleInfo;
class LandingPadInst;
class Loop;
class PHINode;
diff --git a/llvm/include/llvm/Transforms/Utils/ControlFlowUtils.h b/llvm/include/llvm/Transforms/Utils/ControlFlowUtils.h
index 17cde82b084d8..d8c97b3b41ae9 100644
--- a/llvm/include/llvm/Transforms/Utils/ControlFlowUtils.h
+++ b/llvm/include/llvm/Transforms/Utils/ControlFlowUtils.h
@@ -15,7 +15,6 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/IR/CycleInfo.h"
namespace llvm {
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
index 17aa7cc185b66..cdb3896e81778 100644
--- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
@@ -24,6 +24,7 @@
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/Constants.h"
+#include "llvm/IR/CycleInfo.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/Dominators.h"
``````````
</details>
https://github.com/llvm/llvm-project/pull/187029
More information about the llvm-commits
mailing list