[llvm] [Support][NFC] Drop unnecessary default lambdas (PR #175577)
Alexis Engelke via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 12 08:19:00 PST 2026
https://github.com/aengelke created https://github.com/llvm/llvm-project/pull/175577
These lambdas must be instantiated and code-generated in multiple CUs; instead use the null/default state of std::function as default state.
Found this while looking at redundant template instantiations across files.
Very minor compile-time improvement of Clang/LLVM: https://llvm-compile-time-tracker.com/compare_clang.php?from=277069e8c184be85854f4065df45af4778e2f9a0&to=a0c8fdcf0a50f99a03b5edd02b50881edc22241c&stat=instructions%3Au&sortBy=absolute-difference
>From a0c8fdcf0a50f99a03b5edd02b50881edc22241c Mon Sep 17 00:00:00 2001
From: Alexis Engelke <engelke at in.tum.de>
Date: Tue, 30 Dec 2025 14:22:45 +0000
Subject: [PATCH] [Support][NFC] Drop unnecessary default lambdas
These must be instantiated and code-generated in multiple CUs; instead
use the null/default state of std::function as default state.
---
llvm/include/llvm/Support/CommandLine.h | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/llvm/include/llvm/Support/CommandLine.h b/llvm/include/llvm/Support/CommandLine.h
index d737fbcf891b3..168bbff65342b 100644
--- a/llvm/include/llvm/Support/CommandLine.h
+++ b/llvm/include/llvm/Support/CommandLine.h
@@ -1463,7 +1463,8 @@ class opt
return true; // Parse error!
this->setValue(Val);
this->setPosition(pos);
- Callback(Val);
+ if (Callback)
+ Callback(Val);
return false;
}
@@ -1518,13 +1519,15 @@ class opt
template <class T> DataType &operator=(const T &Val) {
this->setValue(Val);
- Callback(Val);
+ if (Callback)
+ Callback(Val);
return this->getValue();
}
template <class T> DataType &operator=(T &&Val) {
this->getValue() = std::forward<T>(Val);
- Callback(this->getValue());
+ if (Callback)
+ Callback(this->getValue());
return this->getValue();
}
@@ -1540,8 +1543,7 @@ class opt
Callback = CB;
}
- std::function<void(const typename ParserClass::parser_data_type &)> Callback =
- [](const typename ParserClass::parser_data_type &) {};
+ std::function<void(const typename ParserClass::parser_data_type &)> Callback;
};
#if !(defined(LLVM_ENABLE_LLVM_EXPORT_ANNOTATIONS) && defined(_MSC_VER))
@@ -1718,7 +1720,8 @@ class list : public Option, public list_storage<DataType, StorageClass> {
list_storage<DataType, StorageClass>::addValue(Val);
setPosition(pos);
Positions.push_back(pos);
- Callback(Val);
+ if (Callback)
+ Callback(Val);
return false;
}
@@ -1787,8 +1790,7 @@ class list : public Option, public list_storage<DataType, StorageClass> {
Callback = CB;
}
- std::function<void(const typename ParserClass::parser_data_type &)> Callback =
- [](const typename ParserClass::parser_data_type &) {};
+ std::function<void(const typename ParserClass::parser_data_type &)> Callback;
};
// Modifier to set the number of additional values.
@@ -1895,7 +1897,8 @@ class bits : public Option, public bits_storage<DataType, Storage> {
this->addValue(Val);
setPosition(pos);
Positions.push_back(pos);
- Callback(Val);
+ if (Callback)
+ Callback(Val);
return false;
}
@@ -1943,8 +1946,7 @@ class bits : public Option, public bits_storage<DataType, Storage> {
Callback = CB;
}
- std::function<void(const typename ParserClass::parser_data_type &)> Callback =
- [](const typename ParserClass::parser_data_type &) {};
+ std::function<void(const typename ParserClass::parser_data_type &)> Callback;
};
//===----------------------------------------------------------------------===//
More information about the llvm-commits
mailing list