"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)
#include "automemcpy/CodeGen.h"
#include "automemcpy/RandomFunctionGenerator.h"
+#include <optional>
#include <unordered_set>
namespace llvm {
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;
// 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;
// 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;
}
// 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;
}
// 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;
return std::nullopt;
}
-Optional<FunctionDescriptor> RandomFunctionGenerator::next() {
+std::optional<FunctionDescriptor> RandomFunctionGenerator::next() {
if (Solver.check() != z3::sat)
return {};