[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-09 Thread Jon Roelofs via cfe-commits

jroelofs wrote:

Moved the test to its own file to fix appease buildbots 
9bb54b2aa006e3bf5df5eb8672075dd589fb9ba5

https://github.com/llvm/llvm-project/pull/81167
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-09 Thread Jon Roelofs via cfe-commits

https://github.com/jroelofs closed 
https://github.com/llvm/llvm-project/pull/81167
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-08 Thread Fangrui Song via cfe-commits

https://github.com/MaskRay approved this pull request.


https://github.com/llvm/llvm-project/pull/81167
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-08 Thread Argyrios Kyrtzidis via cfe-commits

https://github.com/akyrtzi approved this pull request.


https://github.com/llvm/llvm-project/pull/81167
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-08 Thread Alexandros Lamprineas via cfe-commits

https://github.com/labrinea approved this pull request.

LGTM. Good catch, thanks for fixing the bug!

https://github.com/llvm/llvm-project/pull/81167
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-08 Thread Jon Roelofs via cfe-commits

https://github.com/jroelofs updated 
https://github.com/llvm/llvm-project/pull/81167

>From 96e3020eaa69f7f14b67617a250df3041cc1996b Mon Sep 17 00:00:00 2001
From: Jon Roelofs 
Date: Thu, 8 Feb 2024 10:02:50 -0800
Subject: [PATCH 1/2] [clang][sema] Fix -Wunused-function on target_version'd
 file-scope functions

We should only warn if the default version is the one that is unused.

Fixes: https://github.com/llvm/llvm-project/issues/80227
---
 clang/include/clang/AST/Decl.h|  4 
 clang/lib/AST/Decl.cpp|  5 +
 clang/lib/Sema/Sema.cpp   |  2 +-
 clang/test/SemaCXX/warn-unused-filescoped.cpp | 16 
 4 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h
index f26fb5ad5f133..854e466cfd6b0 100644
--- a/clang/include/clang/AST/Decl.h
+++ b/clang/include/clang/AST/Decl.h
@@ -2615,6 +2615,10 @@ class FunctionDecl : public DeclaratorDecl,
   /// the target functionality.
   bool isTargetMultiVersion() const;
 
+  /// True if this function is the default version of a multiversioned dispatch
+  /// function as a part of the target functionality.
+  bool isTargetMultiVersionDefault() const;
+
   /// True if this function is a multiversioned dispatch function as a part of
   /// the target-clones functionality.
   bool isTargetClonesMultiVersion() const;
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index 26fdfa040796e..8a79f5c0b04f7 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -3537,6 +3537,11 @@ bool FunctionDecl::isTargetMultiVersion() const {
  (hasAttr() || hasAttr());
 }
 
+bool FunctionDecl::isTargetMultiVersionDefault() const {
+  return isMultiVersion() && hasAttr() &&
+ getAttr()->isDefaultVersion();
+}
+
 bool FunctionDecl::isTargetClonesMultiVersion() const {
   return isMultiVersion() && hasAttr();
 }
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 2d4e6d1d058cd..58cbcc30e098a 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -1393,7 +1393,7 @@ void Sema::ActOnEndOfTranslationUnit() {
   Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
   << /*function=*/0 << DiagD << DiagRange;
   }
-} else {
+} else if (!FD->isTargetMultiVersion() || 
FD->isTargetMultiVersionDefault()) {
   if (FD->getDescribedFunctionTemplate())
 Diag(DiagD->getLocation(), diag::warn_unused_template)
 << /*function=*/0 << DiagD << DiagRange;
diff --git a/clang/test/SemaCXX/warn-unused-filescoped.cpp 
b/clang/test/SemaCXX/warn-unused-filescoped.cpp
index be8d350855c07..0c347e9e19c9d 100644
--- a/clang/test/SemaCXX/warn-unused-filescoped.cpp
+++ b/clang/test/SemaCXX/warn-unused-filescoped.cpp
@@ -236,4 +236,20 @@ constexpr int constexpr4() { return 2; }
 #endif
 }
 
+__attribute__((target_version("fp16")))
+static int not_used_fmv(void) { return 1; }
+__attribute__((target_version("fp16fml")))
+static int not_used_fmv(void) { return 2; }
+__attribute__((target_version("default")))
+static int not_used_fmv(void) { return 0; } // expected-warning {{unused 
function 'not_used_fmv'}}
+
+
+__attribute__((target_version("fp16")))
+static int definitely_used_fmv(void) { return 1; }
+__attribute__((target_version("fp16fml")))
+static int definitely_used_fmv(void) { return 2; }
+__attribute__((target_version("default")))
+static int definitely_used_fmv(void) { return 0; }
+int definite_user(void) { return definitely_used_fmv(); }
+
 #endif

>From 6d2def5873a7da16ffd72e4da973cc5bec7b9beb Mon Sep 17 00:00:00 2001
From: Jon Roelofs 
Date: Thu, 8 Feb 2024 10:22:30 -0800
Subject: [PATCH 2/2] clang-format

---
 clang/lib/Sema/Sema.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 58cbcc30e098a..cfb653e665ea0 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -1393,7 +1393,8 @@ void Sema::ActOnEndOfTranslationUnit() {
   Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
   << /*function=*/0 << DiagD << DiagRange;
   }
-} else if (!FD->isTargetMultiVersion() || 
FD->isTargetMultiVersionDefault()) {
+} else if (!FD->isTargetMultiVersion() ||
+   FD->isTargetMultiVersionDefault()) {
   if (FD->getDescribedFunctionTemplate())
 Diag(DiagD->getLocation(), diag::warn_unused_template)
 << /*function=*/0 << DiagD << DiagRange;

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-08 Thread Jon Roelofs via cfe-commits

https://github.com/jroelofs updated 
https://github.com/llvm/llvm-project/pull/81167

>From 96e3020eaa69f7f14b67617a250df3041cc1996b Mon Sep 17 00:00:00 2001
From: Jon Roelofs 
Date: Thu, 8 Feb 2024 10:02:50 -0800
Subject: [PATCH 1/2] [clang][sema] Fix -Wunused-function on target_version'd
 file-scope functions

We should only warn if the default version is the one that is unused.

Fixes: https://github.com/llvm/llvm-project/issues/80227
---
 clang/include/clang/AST/Decl.h|  4 
 clang/lib/AST/Decl.cpp|  5 +
 clang/lib/Sema/Sema.cpp   |  2 +-
 clang/test/SemaCXX/warn-unused-filescoped.cpp | 16 
 4 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h
index f26fb5ad5f1331..854e466cfd6b0e 100644
--- a/clang/include/clang/AST/Decl.h
+++ b/clang/include/clang/AST/Decl.h
@@ -2615,6 +2615,10 @@ class FunctionDecl : public DeclaratorDecl,
   /// the target functionality.
   bool isTargetMultiVersion() const;
 
+  /// True if this function is the default version of a multiversioned dispatch
+  /// function as a part of the target functionality.
+  bool isTargetMultiVersionDefault() const;
+
   /// True if this function is a multiversioned dispatch function as a part of
   /// the target-clones functionality.
   bool isTargetClonesMultiVersion() const;
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index 26fdfa040796ed..8a79f5c0b04f76 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -3537,6 +3537,11 @@ bool FunctionDecl::isTargetMultiVersion() const {
  (hasAttr() || hasAttr());
 }
 
+bool FunctionDecl::isTargetMultiVersionDefault() const {
+  return isMultiVersion() && hasAttr() &&
+ getAttr()->isDefaultVersion();
+}
+
 bool FunctionDecl::isTargetClonesMultiVersion() const {
   return isMultiVersion() && hasAttr();
 }
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 2d4e6d1d058cd7..58cbcc30e098a8 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -1393,7 +1393,7 @@ void Sema::ActOnEndOfTranslationUnit() {
   Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
   << /*function=*/0 << DiagD << DiagRange;
   }
-} else {
+} else if (!FD->isTargetMultiVersion() || 
FD->isTargetMultiVersionDefault()) {
   if (FD->getDescribedFunctionTemplate())
 Diag(DiagD->getLocation(), diag::warn_unused_template)
 << /*function=*/0 << DiagD << DiagRange;
diff --git a/clang/test/SemaCXX/warn-unused-filescoped.cpp 
b/clang/test/SemaCXX/warn-unused-filescoped.cpp
index be8d350855c078..0c347e9e19c9db 100644
--- a/clang/test/SemaCXX/warn-unused-filescoped.cpp
+++ b/clang/test/SemaCXX/warn-unused-filescoped.cpp
@@ -236,4 +236,20 @@ constexpr int constexpr4() { return 2; }
 #endif
 }
 
+__attribute__((target_version("fp16")))
+static int not_used_fmv(void) { return 1; }
+__attribute__((target_version("fp16fml")))
+static int not_used_fmv(void) { return 2; }
+__attribute__((target_version("default")))
+static int not_used_fmv(void) { return 0; } // expected-warning {{unused 
function 'not_used_fmv'}}
+
+
+__attribute__((target_version("fp16")))
+static int definitely_used_fmv(void) { return 1; }
+__attribute__((target_version("fp16fml")))
+static int definitely_used_fmv(void) { return 2; }
+__attribute__((target_version("default")))
+static int definitely_used_fmv(void) { return 0; }
+int definite_user(void) { return definitely_used_fmv(); }
+
 #endif

>From 6d2def5873a7da16ffd72e4da973cc5bec7b9beb Mon Sep 17 00:00:00 2001
From: Jon Roelofs 
Date: Thu, 8 Feb 2024 10:22:30 -0800
Subject: [PATCH 2/2] clang-format

---
 clang/lib/Sema/Sema.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 58cbcc30e098a8..cfb653e665ea03 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -1393,7 +1393,8 @@ void Sema::ActOnEndOfTranslationUnit() {
   Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
   << /*function=*/0 << DiagD << DiagRange;
   }
-} else if (!FD->isTargetMultiVersion() || 
FD->isTargetMultiVersionDefault()) {
+} else if (!FD->isTargetMultiVersion() ||
+   FD->isTargetMultiVersionDefault()) {
   if (FD->getDescribedFunctionTemplate())
 Diag(DiagD->getLocation(), diag::warn_unused_template)
 << /*function=*/0 << DiagD << DiagRange;

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-08 Thread via cfe-commits

github-actions[bot] wrote:




:warning: C/C++ code formatter, clang-format found issues in your code. 
:warning:



You can test this locally with the following command:


``bash
git-clang-format --diff ff8c865838b46d0202963b816fbed50aaf96a7f4 
96e3020eaa69f7f14b67617a250df3041cc1996b -- clang/include/clang/AST/Decl.h 
clang/lib/AST/Decl.cpp clang/lib/Sema/Sema.cpp 
clang/test/SemaCXX/warn-unused-filescoped.cpp
``





View the diff from clang-format here.


``diff
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 58cbcc30e0..cfb653e665 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -1393,7 +1393,8 @@ void Sema::ActOnEndOfTranslationUnit() {
   Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
   << /*function=*/0 << DiagD << DiagRange;
   }
-} else if (!FD->isTargetMultiVersion() || 
FD->isTargetMultiVersionDefault()) {
+} else if (!FD->isTargetMultiVersion() ||
+   FD->isTargetMultiVersionDefault()) {
   if (FD->getDescribedFunctionTemplate())
 Diag(DiagD->getLocation(), diag::warn_unused_template)
 << /*function=*/0 << DiagD << DiagRange;

``




https://github.com/llvm/llvm-project/pull/81167
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-08 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang

Author: Jon Roelofs (jroelofs)


Changes

We should only warn if the default version is the one that is unused.

Fixes: https://github.com/llvm/llvm-project/issues/80227

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


4 Files Affected:

- (modified) clang/include/clang/AST/Decl.h (+4) 
- (modified) clang/lib/AST/Decl.cpp (+5) 
- (modified) clang/lib/Sema/Sema.cpp (+1-1) 
- (modified) clang/test/SemaCXX/warn-unused-filescoped.cpp (+16) 


``diff
diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h
index f26fb5ad5f133..854e466cfd6b0 100644
--- a/clang/include/clang/AST/Decl.h
+++ b/clang/include/clang/AST/Decl.h
@@ -2615,6 +2615,10 @@ class FunctionDecl : public DeclaratorDecl,
   /// the target functionality.
   bool isTargetMultiVersion() const;
 
+  /// True if this function is the default version of a multiversioned dispatch
+  /// function as a part of the target functionality.
+  bool isTargetMultiVersionDefault() const;
+
   /// True if this function is a multiversioned dispatch function as a part of
   /// the target-clones functionality.
   bool isTargetClonesMultiVersion() const;
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index 26fdfa040796e..8a79f5c0b04f7 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -3537,6 +3537,11 @@ bool FunctionDecl::isTargetMultiVersion() const {
  (hasAttr() || hasAttr());
 }
 
+bool FunctionDecl::isTargetMultiVersionDefault() const {
+  return isMultiVersion() && hasAttr() &&
+ getAttr()->isDefaultVersion();
+}
+
 bool FunctionDecl::isTargetClonesMultiVersion() const {
   return isMultiVersion() && hasAttr();
 }
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 2d4e6d1d058cd..58cbcc30e098a 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -1393,7 +1393,7 @@ void Sema::ActOnEndOfTranslationUnit() {
   Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
   << /*function=*/0 << DiagD << DiagRange;
   }
-} else {
+} else if (!FD->isTargetMultiVersion() || 
FD->isTargetMultiVersionDefault()) {
   if (FD->getDescribedFunctionTemplate())
 Diag(DiagD->getLocation(), diag::warn_unused_template)
 << /*function=*/0 << DiagD << DiagRange;
diff --git a/clang/test/SemaCXX/warn-unused-filescoped.cpp 
b/clang/test/SemaCXX/warn-unused-filescoped.cpp
index be8d350855c07..0c347e9e19c9d 100644
--- a/clang/test/SemaCXX/warn-unused-filescoped.cpp
+++ b/clang/test/SemaCXX/warn-unused-filescoped.cpp
@@ -236,4 +236,20 @@ constexpr int constexpr4() { return 2; }
 #endif
 }
 
+__attribute__((target_version("fp16")))
+static int not_used_fmv(void) { return 1; }
+__attribute__((target_version("fp16fml")))
+static int not_used_fmv(void) { return 2; }
+__attribute__((target_version("default")))
+static int not_used_fmv(void) { return 0; } // expected-warning {{unused 
function 'not_used_fmv'}}
+
+
+__attribute__((target_version("fp16")))
+static int definitely_used_fmv(void) { return 1; }
+__attribute__((target_version("fp16fml")))
+static int definitely_used_fmv(void) { return 2; }
+__attribute__((target_version("default")))
+static int definitely_used_fmv(void) { return 0; }
+int definite_user(void) { return definitely_used_fmv(); }
+
 #endif

``




https://github.com/llvm/llvm-project/pull/81167
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][sema] Fix -Wunused-function on target_version'd file-scope Fn's (PR #81167)

2024-02-08 Thread Jon Roelofs via cfe-commits

https://github.com/jroelofs created 
https://github.com/llvm/llvm-project/pull/81167

We should only warn if the default version is the one that is unused.

Fixes: https://github.com/llvm/llvm-project/issues/80227

>From 96e3020eaa69f7f14b67617a250df3041cc1996b Mon Sep 17 00:00:00 2001
From: Jon Roelofs 
Date: Thu, 8 Feb 2024 10:02:50 -0800
Subject: [PATCH] [clang][sema] Fix -Wunused-function on target_version'd
 file-scope functions

We should only warn if the default version is the one that is unused.

Fixes: https://github.com/llvm/llvm-project/issues/80227
---
 clang/include/clang/AST/Decl.h|  4 
 clang/lib/AST/Decl.cpp|  5 +
 clang/lib/Sema/Sema.cpp   |  2 +-
 clang/test/SemaCXX/warn-unused-filescoped.cpp | 16 
 4 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h
index f26fb5ad5f133..854e466cfd6b0 100644
--- a/clang/include/clang/AST/Decl.h
+++ b/clang/include/clang/AST/Decl.h
@@ -2615,6 +2615,10 @@ class FunctionDecl : public DeclaratorDecl,
   /// the target functionality.
   bool isTargetMultiVersion() const;
 
+  /// True if this function is the default version of a multiversioned dispatch
+  /// function as a part of the target functionality.
+  bool isTargetMultiVersionDefault() const;
+
   /// True if this function is a multiversioned dispatch function as a part of
   /// the target-clones functionality.
   bool isTargetClonesMultiVersion() const;
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index 26fdfa040796e..8a79f5c0b04f7 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -3537,6 +3537,11 @@ bool FunctionDecl::isTargetMultiVersion() const {
  (hasAttr() || hasAttr());
 }
 
+bool FunctionDecl::isTargetMultiVersionDefault() const {
+  return isMultiVersion() && hasAttr() &&
+ getAttr()->isDefaultVersion();
+}
+
 bool FunctionDecl::isTargetClonesMultiVersion() const {
   return isMultiVersion() && hasAttr();
 }
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 2d4e6d1d058cd..58cbcc30e098a 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -1393,7 +1393,7 @@ void Sema::ActOnEndOfTranslationUnit() {
   Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
   << /*function=*/0 << DiagD << DiagRange;
   }
-} else {
+} else if (!FD->isTargetMultiVersion() || 
FD->isTargetMultiVersionDefault()) {
   if (FD->getDescribedFunctionTemplate())
 Diag(DiagD->getLocation(), diag::warn_unused_template)
 << /*function=*/0 << DiagD << DiagRange;
diff --git a/clang/test/SemaCXX/warn-unused-filescoped.cpp 
b/clang/test/SemaCXX/warn-unused-filescoped.cpp
index be8d350855c07..0c347e9e19c9d 100644
--- a/clang/test/SemaCXX/warn-unused-filescoped.cpp
+++ b/clang/test/SemaCXX/warn-unused-filescoped.cpp
@@ -236,4 +236,20 @@ constexpr int constexpr4() { return 2; }
 #endif
 }
 
+__attribute__((target_version("fp16")))
+static int not_used_fmv(void) { return 1; }
+__attribute__((target_version("fp16fml")))
+static int not_used_fmv(void) { return 2; }
+__attribute__((target_version("default")))
+static int not_used_fmv(void) { return 0; } // expected-warning {{unused 
function 'not_used_fmv'}}
+
+
+__attribute__((target_version("fp16")))
+static int definitely_used_fmv(void) { return 1; }
+__attribute__((target_version("fp16fml")))
+static int definitely_used_fmv(void) { return 2; }
+__attribute__((target_version("default")))
+static int definitely_used_fmv(void) { return 0; }
+int definite_user(void) { return definitely_used_fmv(); }
+
 #endif

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits