[llvm] d01d9ab - [SandboxIR][NFC] Move sandboxir::Use into a separate file (#99074)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 16 13:10:03 PDT 2024


Author: vporpo
Date: 2024-07-16T13:10:00-07:00
New Revision: d01d9abf851fe688dd5f24649db2728431ca5c0d

URL: https://github.com/llvm/llvm-project/commit/d01d9abf851fe688dd5f24649db2728431ca5c0d
DIFF: https://github.com/llvm/llvm-project/commit/d01d9abf851fe688dd5f24649db2728431ca5c0d.diff

LOG: [SandboxIR][NFC] Move sandboxir::Use into a separate file (#99074)

This helps avoid circular dependencies in a follow-up patch.

Added: 
    llvm/include/llvm/SandboxIR/Use.h

Modified: 
    llvm/include/llvm/SandboxIR/SandboxIR.h

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/SandboxIR/SandboxIR.h b/llvm/include/llvm/SandboxIR/SandboxIR.h
index d4ab8c3548a3c..fcb581211736e 100644
--- a/llvm/include/llvm/SandboxIR/SandboxIR.h
+++ b/llvm/include/llvm/SandboxIR/SandboxIR.h
@@ -55,12 +55,13 @@
 // } // namespace sandboxir
 //
 
-#ifndef LLVM_TRANSFORMS_SANDBOXIR_SANDBOXIR_H
-#define LLVM_TRANSFORMS_SANDBOXIR_SANDBOXIR_H
+#ifndef LLVM_SANDBOXIR_SANDBOXIR_H
+#define LLVM_SANDBOXIR_SANDBOXIR_H
 
 #include "llvm/IR/Function.h"
 #include "llvm/IR/User.h"
 #include "llvm/IR/Value.h"
+#include "llvm/SandboxIR/Use.h"
 #include "llvm/Support/raw_ostream.h"
 #include <iterator>
 
@@ -75,42 +76,6 @@ class Instruction;
 class User;
 class Value;
 
-/// Represents a Def-use/Use-def edge in SandboxIR.
-/// NOTE: Unlike llvm::Use, this is not an integral part of the use-def chains.
-/// It is also not uniqued and is currently passed by value, so you can have
-/// more than one sandboxir::Use objects for the same use-def edge.
-class Use {
-  llvm::Use *LLVMUse;
-  User *Usr;
-  Context *Ctx;
-
-  /// Don't allow the user to create a sandboxir::Use directly.
-  Use(llvm::Use *LLVMUse, User *Usr, Context &Ctx)
-      : LLVMUse(LLVMUse), Usr(Usr), Ctx(&Ctx) {}
-  Use() : LLVMUse(nullptr), Ctx(nullptr) {}
-
-  friend class Value;              // For constructor
-  friend class User;               // For constructor
-  friend class OperandUseIterator; // For constructor
-  friend class UserUseIterator;    // For accessing members
-
-public:
-  operator Value *() const { return get(); }
-  Value *get() const;
-  class User *getUser() const { return Usr; }
-  unsigned getOperandNo() const;
-  Context *getContext() const { return Ctx; }
-  bool operator==(const Use &Other) const {
-    assert(Ctx == Other.Ctx && "Contexts 
diff er!");
-    return LLVMUse == Other.LLVMUse && Usr == Other.Usr;
-  }
-  bool operator!=(const Use &Other) const { return !(*this == Other); }
-#ifndef NDEBUG
-  void dump(raw_ostream &OS) const;
-  void dump() const;
-#endif // NDEBUG
-};
-
 /// Returns the operand edge when dereferenced.
 class OperandUseIterator {
   sandboxir::Use Use;
@@ -764,4 +729,4 @@ class Function : public sandboxir::Value {
 } // namespace sandboxir
 } // namespace llvm
 
-#endif // LLVM_TRANSFORMS_SANDBOXIR_SANDBOXIR_H
+#endif // LLVM_SANDBOXIR_SANDBOXIR_H

diff  --git a/llvm/include/llvm/SandboxIR/Use.h b/llvm/include/llvm/SandboxIR/Use.h
new file mode 100644
index 0000000000000..33afb54c1ff29
--- /dev/null
+++ b/llvm/include/llvm/SandboxIR/Use.h
@@ -0,0 +1,63 @@
+//===- Use.h ----------------------------------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// Sandbox IR Use.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SANDBOXIR_USE_H
+#define LLVM_SANDBOXIR_USE_H
+
+#include "llvm/IR/Use.h"
+#include "llvm/Support/raw_ostream.h"
+
+namespace llvm::sandboxir {
+
+class Context;
+class Value;
+class User;
+
+/// Represents a Def-use/Use-def edge in SandboxIR.
+/// NOTE: Unlike llvm::Use, this is not an integral part of the use-def chains.
+/// It is also not uniqued and is currently passed by value, so you can have
+/// more than one sandboxir::Use objects for the same use-def edge.
+class Use {
+  llvm::Use *LLVMUse;
+  User *Usr;
+  Context *Ctx;
+
+  /// Don't allow the user to create a sandboxir::Use directly.
+  Use(llvm::Use *LLVMUse, User *Usr, Context &Ctx)
+      : LLVMUse(LLVMUse), Usr(Usr), Ctx(&Ctx) {}
+  Use() : LLVMUse(nullptr), Ctx(nullptr) {}
+
+  friend class Value;              // For constructor
+  friend class User;               // For constructor
+  friend class OperandUseIterator; // For constructor
+  friend class UserUseIterator;    // For accessing members
+
+public:
+  operator Value *() const { return get(); }
+  Value *get() const;
+  class User *getUser() const { return Usr; }
+  unsigned getOperandNo() const;
+  Context *getContext() const { return Ctx; }
+  bool operator==(const Use &Other) const {
+    assert(Ctx == Other.Ctx && "Contexts 
diff er!");
+    return LLVMUse == Other.LLVMUse && Usr == Other.Usr;
+  }
+  bool operator!=(const Use &Other) const { return !(*this == Other); }
+#ifndef NDEBUG
+  void dump(raw_ostream &OS) const;
+  void dump() const;
+#endif // NDEBUG
+};
+
+} // namespace llvm::sandboxir
+
+#endif // LLVM_SANDBOXIR_USE_H


        


More information about the llvm-commits mailing list