[llvm] [SandboxIR][NFC] Move Function class to a separate file (PR #110526)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 30 08:55:05 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: vporpo (vporpo)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/110526.diff
21 Files Affected:
- (modified) llvm/benchmarks/SandboxIRBench.cpp (+1)
- (modified) llvm/include/llvm/SandboxIR/Constant.h (-53)
- (added) llvm/include/llvm/SandboxIR/Function.h (+72)
- (modified) llvm/lib/SandboxIR/BasicBlock.cpp (+1)
- (modified) llvm/lib/SandboxIR/CMakeLists.txt (+1)
- (modified) llvm/lib/SandboxIR/Constant.cpp (+1-40)
- (modified) llvm/lib/SandboxIR/Context.cpp (+1)
- (added) llvm/lib/SandboxIR/Function.cpp (+55)
- (modified) llvm/lib/SandboxIR/Instruction.cpp (+1)
- (modified) llvm/lib/SandboxIR/Module.cpp (+1)
- (modified) llvm/lib/SandboxIR/Region.cpp (+1)
- (modified) llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp (+1)
- (modified) llvm/unittests/SandboxIR/PassTest.cpp (+1)
- (modified) llvm/unittests/SandboxIR/RegionTest.cpp (+1-1)
- (modified) llvm/unittests/SandboxIR/SandboxIRTest.cpp (+1)
- (modified) llvm/unittests/SandboxIR/TrackerTest.cpp (+1)
- (modified) llvm/unittests/SandboxIR/TypesTest.cpp (+1)
- (modified) llvm/unittests/SandboxIR/UtilsTest.cpp (+1)
- (modified) llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp (+1-1)
- (modified) llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp (+1-1)
- (modified) llvm/unittests/Transforms/Vectorize/SandboxVectorizer/LegalityTest.cpp (+1)
``````````diff
diff --git a/llvm/benchmarks/SandboxIRBench.cpp b/llvm/benchmarks/SandboxIRBench.cpp
index 8f7ab1a3768997..45f352697868be 100644
--- a/llvm/benchmarks/SandboxIRBench.cpp
+++ b/llvm/benchmarks/SandboxIRBench.cpp
@@ -18,6 +18,7 @@
#include "llvm/IR/Function.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Module.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
#include "llvm/SandboxIR/Module.h"
#include "llvm/Support/SourceMgr.h"
diff --git a/llvm/include/llvm/SandboxIR/Constant.h b/llvm/include/llvm/SandboxIR/Constant.h
index e35d23be6619fe..7965f947e31b82 100644
--- a/llvm/include/llvm/SandboxIR/Constant.h
+++ b/llvm/include/llvm/SandboxIR/Constant.h
@@ -1227,59 +1227,6 @@ class ConstantTokenNone final : public Constant {
#endif
};
-class Function : public GlobalWithNodeAPI<Function, llvm::Function,
- GlobalObject, llvm::GlobalObject> {
- /// Helper for mapped_iterator.
- struct LLVMBBToBB {
- Context &Ctx;
- LLVMBBToBB(Context &Ctx) : Ctx(Ctx) {}
- BasicBlock &operator()(llvm::BasicBlock &LLVMBB) const {
- return *cast<BasicBlock>(Ctx.getValue(&LLVMBB));
- }
- };
- /// Use Context::createFunction() instead.
- Function(llvm::Function *F, sandboxir::Context &Ctx)
- : GlobalWithNodeAPI(ClassID::Function, F, Ctx) {}
- friend class Context; // For constructor.
-
-public:
- /// For isa/dyn_cast.
- static bool classof(const sandboxir::Value *From) {
- return From->getSubclassID() == ClassID::Function;
- }
-
- Module *getParent() {
- return Ctx.getModule(cast<llvm::Function>(Val)->getParent());
- }
-
- Argument *getArg(unsigned Idx) const {
- llvm::Argument *Arg = cast<llvm::Function>(Val)->getArg(Idx);
- return cast<Argument>(Ctx.getValue(Arg));
- }
-
- size_t arg_size() const { return cast<llvm::Function>(Val)->arg_size(); }
- bool arg_empty() const { return cast<llvm::Function>(Val)->arg_empty(); }
-
- using iterator = mapped_iterator<llvm::Function::iterator, LLVMBBToBB>;
- iterator begin() const {
- LLVMBBToBB BBGetter(Ctx);
- return iterator(cast<llvm::Function>(Val)->begin(), BBGetter);
- }
- iterator end() const {
- LLVMBBToBB BBGetter(Ctx);
- return iterator(cast<llvm::Function>(Val)->end(), BBGetter);
- }
- FunctionType *getFunctionType() const;
-
-#ifndef NDEBUG
- void verify() const final {
- assert(isa<llvm::Function>(Val) && "Expected Function!");
- }
- void dumpNameAndArgs(raw_ostream &OS) const;
- void dumpOS(raw_ostream &OS) const final;
-#endif
-};
-
} // namespace llvm::sandboxir
#endif // LLVM_SANDBOXIR_CONSTANT_H
diff --git a/llvm/include/llvm/SandboxIR/Function.h b/llvm/include/llvm/SandboxIR/Function.h
new file mode 100644
index 00000000000000..a810533f769f71
--- /dev/null
+++ b/llvm/include/llvm/SandboxIR/Function.h
@@ -0,0 +1,72 @@
+//===- Function.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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SANDBOXIR_FUNCTION_H
+#define LLVM_SANDBOXIR_FUNCTION_H
+
+#include "llvm/IR/Function.h"
+#include "llvm/SandboxIR/Constant.h"
+
+namespace llvm::sandboxir {
+
+class Function : public GlobalWithNodeAPI<Function, llvm::Function,
+ GlobalObject, llvm::GlobalObject> {
+ /// Helper for mapped_iterator.
+ struct LLVMBBToBB {
+ Context &Ctx;
+ LLVMBBToBB(Context &Ctx) : Ctx(Ctx) {}
+ BasicBlock &operator()(llvm::BasicBlock &LLVMBB) const {
+ return *cast<BasicBlock>(Ctx.getValue(&LLVMBB));
+ }
+ };
+ /// Use Context::createFunction() instead.
+ Function(llvm::Function *F, sandboxir::Context &Ctx)
+ : GlobalWithNodeAPI(ClassID::Function, F, Ctx) {}
+ friend class Context; // For constructor.
+
+public:
+ /// For isa/dyn_cast.
+ static bool classof(const sandboxir::Value *From) {
+ return From->getSubclassID() == ClassID::Function;
+ }
+
+ Module *getParent() {
+ return Ctx.getModule(cast<llvm::Function>(Val)->getParent());
+ }
+
+ Argument *getArg(unsigned Idx) const {
+ llvm::Argument *Arg = cast<llvm::Function>(Val)->getArg(Idx);
+ return cast<Argument>(Ctx.getValue(Arg));
+ }
+
+ size_t arg_size() const { return cast<llvm::Function>(Val)->arg_size(); }
+ bool arg_empty() const { return cast<llvm::Function>(Val)->arg_empty(); }
+
+ using iterator = mapped_iterator<llvm::Function::iterator, LLVMBBToBB>;
+ iterator begin() const {
+ LLVMBBToBB BBGetter(Ctx);
+ return iterator(cast<llvm::Function>(Val)->begin(), BBGetter);
+ }
+ iterator end() const {
+ LLVMBBToBB BBGetter(Ctx);
+ return iterator(cast<llvm::Function>(Val)->end(), BBGetter);
+ }
+ FunctionType *getFunctionType() const;
+
+#ifndef NDEBUG
+ void verify() const final {
+ assert(isa<llvm::Function>(Val) && "Expected Function!");
+ }
+ void dumpNameAndArgs(raw_ostream &OS) const;
+ void dumpOS(raw_ostream &OS) const final;
+#endif
+};
+
+} // namespace llvm::sandboxir
+
+#endif // LLVM_SANDBOXIR_FUNCTION_H
diff --git a/llvm/lib/SandboxIR/BasicBlock.cpp b/llvm/lib/SandboxIR/BasicBlock.cpp
index ebca41aa39da82..983a5e8b8825ef 100644
--- a/llvm/lib/SandboxIR/BasicBlock.cpp
+++ b/llvm/lib/SandboxIR/BasicBlock.cpp
@@ -8,6 +8,7 @@
#include "llvm/SandboxIR/BasicBlock.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
namespace llvm::sandboxir {
diff --git a/llvm/lib/SandboxIR/CMakeLists.txt b/llvm/lib/SandboxIR/CMakeLists.txt
index 293be1849f29d3..3ec53b04b046f9 100644
--- a/llvm/lib/SandboxIR/CMakeLists.txt
+++ b/llvm/lib/SandboxIR/CMakeLists.txt
@@ -3,6 +3,7 @@ add_llvm_component_library(LLVMSandboxIR
BasicBlock.cpp
Constant.cpp
Context.cpp
+ Function.cpp
Instruction.cpp
Module.cpp
Pass.cpp
diff --git a/llvm/lib/SandboxIR/Constant.cpp b/llvm/lib/SandboxIR/Constant.cpp
index 6f1eb1e74347d9..f26c004f630925 100644
--- a/llvm/lib/SandboxIR/Constant.cpp
+++ b/llvm/lib/SandboxIR/Constant.cpp
@@ -10,6 +10,7 @@
#include "llvm/SandboxIR/Argument.h"
#include "llvm/SandboxIR/BasicBlock.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
namespace llvm::sandboxir {
@@ -467,44 +468,4 @@ GlobalValue *DSOLocalEquivalent::getGlobalValue() const {
Ctx.getValue(cast<llvm::DSOLocalEquivalent>(Val)->getGlobalValue()));
}
-FunctionType *Function::getFunctionType() const {
- return cast<FunctionType>(
- Ctx.getType(cast<llvm::Function>(Val)->getFunctionType()));
-}
-
-#ifndef NDEBUG
-void Function::dumpNameAndArgs(raw_ostream &OS) const {
- auto *F = cast<llvm::Function>(Val);
- OS << *F->getReturnType() << " @" << F->getName() << "(";
- interleave(
- F->args(),
- [this, &OS](const llvm::Argument &LLVMArg) {
- auto *SBArg = cast_or_null<Argument>(Ctx.getValue(&LLVMArg));
- if (SBArg == nullptr)
- OS << "NULL";
- else
- SBArg->printAsOperand(OS);
- },
- [&] { OS << ", "; });
- OS << ")";
-}
-
-void Function::dumpOS(raw_ostream &OS) const {
- dumpNameAndArgs(OS);
- OS << " {\n";
- auto *LLVMF = cast<llvm::Function>(Val);
- interleave(
- *LLVMF,
- [this, &OS](const llvm::BasicBlock &LLVMBB) {
- auto *BB = cast_or_null<BasicBlock>(Ctx.getValue(&LLVMBB));
- if (BB == nullptr)
- OS << "NULL";
- else
- OS << *BB;
- },
- [&OS] { OS << "\n"; });
- OS << "}\n";
-}
-#endif // NDEBUG
-
} // namespace llvm::sandboxir
diff --git a/llvm/lib/SandboxIR/Context.cpp b/llvm/lib/SandboxIR/Context.cpp
index 0a61e329b78c51..f5b3d2733344f6 100644
--- a/llvm/lib/SandboxIR/Context.cpp
+++ b/llvm/lib/SandboxIR/Context.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
#include "llvm/SandboxIR/Module.h"
diff --git a/llvm/lib/SandboxIR/Function.cpp b/llvm/lib/SandboxIR/Function.cpp
new file mode 100644
index 00000000000000..f7a1d35b00465d
--- /dev/null
+++ b/llvm/lib/SandboxIR/Function.cpp
@@ -0,0 +1,55 @@
+//===- Function.cpp - The Function class of Sandbox IR --------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/SandboxIR/Function.h"
+#include "llvm/IR/Value.h"
+#include "llvm/SandboxIR/Context.h"
+
+namespace llvm::sandboxir {
+
+FunctionType *Function::getFunctionType() const {
+ return cast<FunctionType>(
+ Ctx.getType(cast<llvm::Function>(Val)->getFunctionType()));
+}
+
+#ifndef NDEBUG
+void Function::dumpNameAndArgs(raw_ostream &OS) const {
+ auto *F = cast<llvm::Function>(Val);
+ OS << *F->getReturnType() << " @" << F->getName() << "(";
+ interleave(
+ F->args(),
+ [this, &OS](const llvm::Argument &LLVMArg) {
+ auto *SBArg = cast_or_null<Argument>(Ctx.getValue(&LLVMArg));
+ if (SBArg == nullptr)
+ OS << "NULL";
+ else
+ SBArg->printAsOperand(OS);
+ },
+ [&] { OS << ", "; });
+ OS << ")";
+}
+
+void Function::dumpOS(raw_ostream &OS) const {
+ dumpNameAndArgs(OS);
+ OS << " {\n";
+ auto *LLVMF = cast<llvm::Function>(Val);
+ interleave(
+ *LLVMF,
+ [this, &OS](const llvm::BasicBlock &LLVMBB) {
+ auto *BB = cast_or_null<BasicBlock>(Ctx.getValue(&LLVMBB));
+ if (BB == nullptr)
+ OS << "NULL";
+ else
+ OS << *BB;
+ },
+ [&OS] { OS << "\n"; });
+ OS << "}\n";
+}
+#endif // NDEBUG
+
+} // namespace llvm::sandboxir
diff --git a/llvm/lib/SandboxIR/Instruction.cpp b/llvm/lib/SandboxIR/Instruction.cpp
index 919a44fca8b041..b492af893794f1 100644
--- a/llvm/lib/SandboxIR/Instruction.cpp
+++ b/llvm/lib/SandboxIR/Instruction.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/SandboxIR/Instruction.h"
+#include "llvm/SandboxIR/Function.h"
namespace llvm::sandboxir {
diff --git a/llvm/lib/SandboxIR/Module.cpp b/llvm/lib/SandboxIR/Module.cpp
index a6a5fb2aae8a10..61cc2414c45ae3 100644
--- a/llvm/lib/SandboxIR/Module.cpp
+++ b/llvm/lib/SandboxIR/Module.cpp
@@ -9,6 +9,7 @@
#include "llvm/SandboxIR/Module.h"
#include "llvm/SandboxIR/Constant.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Value.h"
using namespace llvm::sandboxir;
diff --git a/llvm/lib/SandboxIR/Region.cpp b/llvm/lib/SandboxIR/Region.cpp
index b14c87f44260f9..b6292f3b24b876 100644
--- a/llvm/lib/SandboxIR/Region.cpp
+++ b/llvm/lib/SandboxIR/Region.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/SandboxIR/Region.h"
+#include "llvm/SandboxIR/Function.h"
namespace llvm::sandboxir {
diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp
index 7ebbcabb004df7..c59abd09d43629 100644
--- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp
+++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp
@@ -8,6 +8,7 @@
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
using namespace llvm::sandboxir;
diff --git a/llvm/unittests/SandboxIR/PassTest.cpp b/llvm/unittests/SandboxIR/PassTest.cpp
index 9cd54352735dcb..10fe59b654a2ec 100644
--- a/llvm/unittests/SandboxIR/PassTest.cpp
+++ b/llvm/unittests/SandboxIR/PassTest.cpp
@@ -11,6 +11,7 @@
#include "llvm/IR/Module.h"
#include "llvm/SandboxIR/Constant.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/PassManager.h"
#include "llvm/Support/SourceMgr.h"
#include "gtest/gtest.h"
diff --git a/llvm/unittests/SandboxIR/RegionTest.cpp b/llvm/unittests/SandboxIR/RegionTest.cpp
index f1bb535d9c50e5..602534530e248c 100644
--- a/llvm/unittests/SandboxIR/RegionTest.cpp
+++ b/llvm/unittests/SandboxIR/RegionTest.cpp
@@ -8,8 +8,8 @@
#include "llvm/SandboxIR/Region.h"
#include "llvm/AsmParser/Parser.h"
-#include "llvm/SandboxIR/Constant.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
#include "llvm/Support/SourceMgr.h"
#include "gmock/gmock-matchers.h"
diff --git a/llvm/unittests/SandboxIR/SandboxIRTest.cpp b/llvm/unittests/SandboxIR/SandboxIRTest.cpp
index 66a5191b1154b6..3bd520f3174c26 100644
--- a/llvm/unittests/SandboxIR/SandboxIRTest.cpp
+++ b/llvm/unittests/SandboxIR/SandboxIRTest.cpp
@@ -15,6 +15,7 @@
#include "llvm/IR/Module.h"
#include "llvm/SandboxIR/BasicBlock.h"
#include "llvm/SandboxIR/Constant.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
#include "llvm/SandboxIR/Module.h"
#include "llvm/SandboxIR/Utils.h"
diff --git a/llvm/unittests/SandboxIR/TrackerTest.cpp b/llvm/unittests/SandboxIR/TrackerTest.cpp
index 5823f4e14a8542..9c7710a6a92976 100644
--- a/llvm/unittests/SandboxIR/TrackerTest.cpp
+++ b/llvm/unittests/SandboxIR/TrackerTest.cpp
@@ -11,6 +11,7 @@
#include "llvm/IR/Function.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Module.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
#include "llvm/Support/SourceMgr.h"
#include "gmock/gmock-matchers.h"
diff --git a/llvm/unittests/SandboxIR/TypesTest.cpp b/llvm/unittests/SandboxIR/TypesTest.cpp
index 9bf02c97948eb0..6ccd08d4e710fb 100644
--- a/llvm/unittests/SandboxIR/TypesTest.cpp
+++ b/llvm/unittests/SandboxIR/TypesTest.cpp
@@ -16,6 +16,7 @@
#include "llvm/IR/Module.h"
#include "llvm/SandboxIR/Constant.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/Support/SourceMgr.h"
#include "gtest/gtest.h"
diff --git a/llvm/unittests/SandboxIR/UtilsTest.cpp b/llvm/unittests/SandboxIR/UtilsTest.cpp
index 18d62d95d24333..96c58ba2ee5322 100644
--- a/llvm/unittests/SandboxIR/UtilsTest.cpp
+++ b/llvm/unittests/SandboxIR/UtilsTest.cpp
@@ -15,6 +15,7 @@
#include "llvm/IR/Module.h"
#include "llvm/SandboxIR/Constant.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/Support/SourceMgr.h"
#include "gtest/gtest.h"
diff --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp
index 329d3617a31fa1..d8b6f519982eb1 100644
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp
+++ b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp
@@ -8,8 +8,8 @@
#include "llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h"
#include "llvm/AsmParser/Parser.h"
-#include "llvm/SandboxIR/Constant.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
#include "llvm/Support/SourceMgr.h"
#include "gmock/gmock-matchers.h"
diff --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
index 0b2411151a9653..d463a61d5969b0 100644
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
+++ b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
@@ -8,8 +8,8 @@
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Interval.h"
#include "llvm/AsmParser/Parser.h"
-#include "llvm/SandboxIR/Constant.h"
#include "llvm/SandboxIR/Context.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
#include "llvm/Support/SourceMgr.h"
#include "gtest/gtest.h"
diff --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/LegalityTest.cpp b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/LegalityTest.cpp
index 89255a108ed6cb..e16222ddb2d615 100644
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/LegalityTest.cpp
+++ b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/LegalityTest.cpp
@@ -8,6 +8,7 @@
#include "llvm/Transforms/Vectorize/SandboxVectorizer/Legality.h"
#include "llvm/AsmParser/Parser.h"
+#include "llvm/SandboxIR/Function.h"
#include "llvm/SandboxIR/Instruction.h"
#include "llvm/Support/SourceMgr.h"
#include "gtest/gtest.h"
``````````
</details>
https://github.com/llvm/llvm-project/pull/110526
More information about the llvm-commits
mailing list