#include "llvm/Bitstream/BitCodes.h"
#include "llvm/Bitstream/BitstreamWriter.h"
#include <cstdint>
+#include <optional>
namespace llvm {
-typedef std::nullopt_t NoneType;
-
namespace detail {
/// Convenience base for all kinds of bitcode abbreviation fields.
///
}
template <typename T, typename... DataTy>
- static void read(ArrayRef<T> buffer, NoneType, DataTy &&...data) {
+ static void read(ArrayRef<T> buffer, std::nullopt_t, DataTy &&...data) {
assert(!buffer.empty() && "too few elements in buffer");
BCRecordCoding<Fields...>::read(buffer.slice(1),
std::forward<DataTy>(data)...);
data = ElementTy::convert(buffer.front());
}
- template <typename T> static void read(ArrayRef<T> buffer, NoneType) {
+ template <typename T> static void read(ArrayRef<T> buffer, std::nullopt_t) {
assert(buffer.size() == 1 && "record data does not match layout");
(void)buffer;
}
template <typename BufferTy>
static void emit(llvm::BitstreamWriter &Stream, BufferTy &Buffer,
- unsigned code, NoneType) {
+ unsigned code, std::nullopt_t) {
Stream.EmitRecordWithAbbrev(code, Buffer);
}
llvm::map_iterator(buffer.end(), T::convert));
}
- template <typename T> static void read(ArrayRef<T> buffer, NoneType) {
+ template <typename T> static void read(ArrayRef<T> buffer, std::nullopt_t) {
(void)buffer;
}