-
Notifications
You must be signed in to change notification settings - Fork 14.8k
[llvm] Use std::make_optional (NFC) #151627
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[llvm] Use std::make_optional (NFC) #151627
Conversation
std::make_optional<T> is a lot like std::make_unique<T> in that it performs perfect forwarding of arguments for T's constructor. As a result, we don't have to repeat type names twice.
@llvm/pr-subscribers-debuginfo @llvm/pr-subscribers-llvm-ir Author: Kazu Hirata (kazutakahirata) Changesstd::make_optional<T> is a lot like std::make_unique<T> in that it Full diff: https://github.com/llvm/llvm-project/pull/151627.diff 4 Files Affected:
diff --git a/llvm/include/llvm/Transforms/IPO/Attributor.h b/llvm/include/llvm/Transforms/IPO/Attributor.h
index 719c0ee136236..e57032a6c5b3c 100644
--- a/llvm/include/llvm/Transforms/IPO/Attributor.h
+++ b/llvm/include/llvm/Transforms/IPO/Attributor.h
@@ -6494,7 +6494,7 @@ struct AAAllocationInfo : public StateWrapper<BooleanState, AbstractAttribute> {
}
constexpr static const std::optional<TypeSize> HasNoAllocationSize =
- std::optional<TypeSize>(TypeSize(-1, true));
+ std::make_optional<TypeSize>(-1, true);
LLVM_ABI static const char ID;
};
diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp
index f16963dce56e1..f1d4549ba015b 100644
--- a/llvm/lib/IR/DebugInfoMetadata.cpp
+++ b/llvm/lib/IR/DebugInfoMetadata.cpp
@@ -1012,7 +1012,7 @@ DIDerivedType *DIDerivedType::getImpl(
std::optional<DIDerivedType::PtrAuthData>
DIDerivedType::getPtrAuthData() const {
return getTag() == dwarf::DW_TAG_LLVM_ptrauth_type
- ? std::optional<PtrAuthData>(PtrAuthData(SubclassData32))
+ ? std::make_optional<PtrAuthData>(SubclassData32)
: std::nullopt;
}
diff --git a/llvm/lib/Remarks/RemarkLinker.cpp b/llvm/lib/Remarks/RemarkLinker.cpp
index 0ca6217edfddd..b00419bd4e51b 100644
--- a/llvm/lib/Remarks/RemarkLinker.cpp
+++ b/llvm/lib/Remarks/RemarkLinker.cpp
@@ -70,8 +70,8 @@ Error RemarkLinker::link(StringRef Buffer, Format RemarkFormat) {
Expected<std::unique_ptr<RemarkParser>> MaybeParser =
createRemarkParserFromMeta(
RemarkFormat, Buffer,
- PrependPath ? std::optional<StringRef>(StringRef(*PrependPath))
- : std::optional<StringRef>());
+ PrependPath ? std::make_optional<StringRef>(*PrependPath)
+ : std::nullopt);
if (!MaybeParser)
return MaybeParser.takeError();
diff --git a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
index 3c24d2eca647d..01da01239382b 100644
--- a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
+++ b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
@@ -13404,7 +13404,7 @@ struct AAAllocationInfoImpl : public AAAllocationInfo {
return indicatePessimisticFixpoint();
if (BinSize == 0) {
- auto NewAllocationSize = std::optional<TypeSize>(TypeSize(0, false));
+ auto NewAllocationSize = std::make_optional<TypeSize>(0, false);
if (!changeAllocationSize(NewAllocationSize))
return ChangeStatus::UNCHANGED;
return ChangeStatus::CHANGED;
@@ -13422,8 +13422,7 @@ struct AAAllocationInfoImpl : public AAAllocationInfo {
if (SizeOfBin >= *AllocationSize)
return indicatePessimisticFixpoint();
- auto NewAllocationSize =
- std::optional<TypeSize>(TypeSize(SizeOfBin * 8, false));
+ auto NewAllocationSize = std::make_optional<TypeSize>(SizeOfBin * 8, false);
if (!changeAllocationSize(NewAllocationSize))
return ChangeStatus::UNCHANGED;
|
Do C++17 deduction guides allow the type to be removed from the std::optional without using std::make_optional? Not sure what our preferred style is. |
std::make_optional<T> is a lot like std::make_unique<T> in that it performs perfect forwarding of arguments for T's constructor. As a result, we don't have to repeat type names twice.
std::make_optional is a lot like std::make_unique in that it
performs perfect forwarding of arguments for T's constructor. As a
result, we don't have to repeat type names twice.