[libc] Use std::optional instead of llvm::Optional (NFC)
authorKazu Hirata <kazu@google.com>
Sun, 15 Jan 2023 05:10:14 +0000 (21:10 -0800)
committerKazu Hirata <kazu@google.com>
Sun, 15 Jan 2023 05:10:14 +0000 (21:10 -0800)
This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

libc/benchmarks/JSON.cpp
libc/benchmarks/automemcpy/lib/CodeGenMain.cpp
libc/benchmarks/automemcpy/lib/RandomFunctionGenerator.cpp

index fd5cf45..6443ff4 100644 (file)
@@ -105,7 +105,7 @@ static Error fromJson(const json::Value &V,
                              "Can't parse BenchmarkLog, not a String");
   const auto String = *V.getAsString();
   auto Parsed =
-      llvm::StringSwitch<Optional<libc_benchmarks::BenchmarkLog>>(String)
+      llvm::StringSwitch<std::optional<libc_benchmarks::BenchmarkLog>>(String)
           .Case("None", libc_benchmarks::BenchmarkLog::None)
           .Case("Last", libc_benchmarks::BenchmarkLog::Last)
           .Case("Full", libc_benchmarks::BenchmarkLog::Full)
index 618e4f1..3f4e6fc 100644 (file)
@@ -1,5 +1,6 @@
 #include "automemcpy/CodeGen.h"
 #include "automemcpy/RandomFunctionGenerator.h"
+#include <optional>
 #include <unordered_set>
 
 namespace llvm {
@@ -9,7 +10,7 @@ std::vector<FunctionDescriptor> generateFunctionDescriptors() {
   std::unordered_set<FunctionDescriptor, FunctionDescriptor::Hasher> Seen;
   std::vector<FunctionDescriptor> FunctionDescriptors;
   RandomFunctionGenerator P;
-  while (Optional<FunctionDescriptor> MaybeFD = P.next()) {
+  while (std::optional<FunctionDescriptor> MaybeFD = P.next()) {
     FunctionDescriptor FD = *MaybeFD;
     if (Seen.count(FD)) // FIXME: Z3 sometimes returns twice the same object.
       continue;
index c362874..f438e2a 100644 (file)
@@ -157,7 +157,7 @@ RandomFunctionGenerator::RandomFunctionGenerator()
 
 // Creates SizeSpan from Begin/End values.
 // Returns std::nullopt if Begin==End.
-static Optional<SizeSpan> AsSizeSpan(size_t Begin, size_t End) {
+static std::optional<SizeSpan> AsSizeSpan(size_t Begin, size_t End) {
   if (Begin == End)
     return std::nullopt;
   SizeSpan SS;
@@ -169,7 +169,7 @@ static Optional<SizeSpan> AsSizeSpan(size_t Begin, size_t End) {
 // Generic method to create a `Region` struct with a Span or std::nullopt if
 // span is empty.
 template <typename Region>
-static Optional<Region> As(size_t Begin, size_t End) {
+static std::optional<Region> As(size_t Begin, size_t End) {
   if (auto Span = AsSizeSpan(Begin, End)) {
     Region Output;
     Output.Span = *Span;
@@ -179,7 +179,7 @@ static Optional<Region> As(size_t Begin, size_t End) {
 }
 
 // Returns a Loop struct or std::nullopt if span is empty.
-static Optional<Loop> AsLoop(size_t Begin, size_t End, size_t BlockSize) {
+static std::optional<Loop> AsLoop(size_t Begin, size_t End, size_t BlockSize) {
   if (auto Span = AsSizeSpan(Begin, End)) {
     Loop Output;
     Output.Span = *Span;
@@ -190,9 +190,10 @@ static Optional<Loop> AsLoop(size_t Begin, size_t End, size_t BlockSize) {
 }
 
 // Returns an AlignedLoop struct or std::nullopt if span is empty.
-static Optional<AlignedLoop> AsAlignedLoop(size_t Begin, size_t End,
-                                           size_t BlockSize, size_t Alignment,
-                                           AlignArg AlignTo) {
+static std::optional<AlignedLoop> AsAlignedLoop(size_t Begin, size_t End,
+                                                size_t BlockSize,
+                                                size_t Alignment,
+                                                AlignArg AlignTo) {
   if (auto Loop = AsLoop(Begin, End, BlockSize)) {
     AlignedLoop Output;
     Output.Loop = *Loop;
@@ -203,7 +204,7 @@ static Optional<AlignedLoop> AsAlignedLoop(size_t Begin, size_t End,
   return std::nullopt;
 }
 
-Optional<FunctionDescriptor> RandomFunctionGenerator::next() {
+std::optional<FunctionDescriptor> RandomFunctionGenerator::next() {
   if (Solver.check() != z3::sat)
     return {};