Files
clang-p2996/llvm/include/llvm/Remarks/RemarkFormat.h
Tobias Stadler d4b7c0d8b4 [Remarks] Auto-detect remark parser format (#144554)
Add remark format 'Auto', which performs automatic detection of the
remark format using the magic numbers at the beginning of the remarks
files.

The RemarkLinker already did something similar, so we streamlined this
and exposed this to llvm-remarkutil.
2025-06-18 20:49:55 +01:00

41 lines
1.3 KiB
C++

//===-- llvm/Remarks/RemarkFormat.h - The format of remarks -----*- C++/-*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file defines utilities to deal with the format of remarks.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_REMARKS_REMARKFORMAT_H
#define LLVM_REMARKS_REMARKFORMAT_H
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Error.h"
namespace llvm {
namespace remarks {
constexpr StringLiteral Magic("REMARKS");
/// The format used for serializing/deserializing remarks.
enum class Format { Unknown, Auto, YAML, Bitstream };
/// Parse and validate a string for the remark format.
LLVM_ABI Expected<Format> parseFormat(StringRef FormatStr);
/// Parse and validate a magic number to a remark format.
LLVM_ABI Expected<Format> magicToFormat(StringRef Magic);
/// Detect format based on selected format and magic number
LLVM_ABI Expected<Format> detectFormat(Format Selected, StringRef Magic);
} // end namespace remarks
} // end namespace llvm
#endif // LLVM_REMARKS_REMARKFORMAT_H