#ifndef LLVM_IR_DIAGNOSTICINFO_H
#define LLVM_IR_DIAGNOSTICINFO_H
#include "llvm-c/Types.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/Support/CBindingWrapping.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/TypeSize.h"
#include <algorithm>
#include <cstdint>
#include <functional>
#include <iterator>
#include <optional>
#include <string>
namespace llvm {
class DiagnosticPrinter;
class DIFile;
class DISubprogram;
class CallInst;
class Function;
class Instruction;
class InstructionCost;
class Module;
class Type;
class Value;
enum DiagnosticSeverity : char { … };
enum DiagnosticKind { … };
int getNextAvailablePluginDiagnosticKind();
class DiagnosticInfo { … };
DiagnosticHandlerFunction;
class DiagnosticInfoInlineAsm : public DiagnosticInfo { … };
class DiagnosticInfoDebugMetadataVersion : public DiagnosticInfo { … };
class DiagnosticInfoIgnoringInvalidDebugMetadata : public DiagnosticInfo { … };
class DiagnosticInfoSampleProfile : public DiagnosticInfo { … };
class DiagnosticInfoPGOProfile : public DiagnosticInfo { … };
class DiagnosticLocation { … };
class DiagnosticInfoWithLocationBase : public DiagnosticInfo { … };
class DiagnosticInfoResourceLimit : public DiagnosticInfoWithLocationBase { … };
class DiagnosticInfoStackSize : public DiagnosticInfoResourceLimit { … };
class DiagnosticInfoOptimizationBase : public DiagnosticInfoWithLocationBase { … };
template <class RemarkT>
RemarkT &
operator<<(RemarkT &R,
std::enable_if_t<
std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
StringRef>
S) { … }
template <class RemarkT>
RemarkT &
operator<<(RemarkT &&R,
std::enable_if_t<
std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
StringRef>
S) { … }
template <class RemarkT>
RemarkT &
operator<<(RemarkT &R,
std::enable_if_t<
std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
DiagnosticInfoOptimizationBase::Argument>
A) { … }
template <class RemarkT>
RemarkT &
operator<<(RemarkT &&R,
std::enable_if_t<
std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
DiagnosticInfoOptimizationBase::Argument>
A) { … }
template <class RemarkT>
RemarkT &
operator<<(RemarkT &R,
std::enable_if_t<
std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
DiagnosticInfoOptimizationBase::setIsVerbose>
V) { … }
template <class RemarkT>
RemarkT &
operator<<(RemarkT &&R,
std::enable_if_t<
std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
DiagnosticInfoOptimizationBase::setIsVerbose>
V) { … }
template <class RemarkT>
RemarkT &
operator<<(RemarkT &R,
std::enable_if_t<
std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
DiagnosticInfoOptimizationBase::setExtraArgs>
EA) { … }
class DiagnosticInfoIROptimization : public DiagnosticInfoOptimizationBase { … };
class OptimizationRemark : public DiagnosticInfoIROptimization { … };
class OptimizationRemarkMissed : public DiagnosticInfoIROptimization { … };
class OptimizationRemarkAnalysis : public DiagnosticInfoIROptimization { … };
class OptimizationRemarkAnalysisFPCommute : public OptimizationRemarkAnalysis { … };
class OptimizationRemarkAnalysisAliasing : public OptimizationRemarkAnalysis { … };
class DiagnosticInfoMIRParser : public DiagnosticInfo { … };
class DiagnosticInfoISelFallback : public DiagnosticInfo { … };
DEFINE_SIMPLE_CONVERSION_FUNCTIONS(…)
class DiagnosticInfoOptimizationFailure : public DiagnosticInfoIROptimization { … };
class DiagnosticInfoUnsupported : public DiagnosticInfoWithLocationBase { … };
class DiagnosticInfoMisExpect : public DiagnosticInfoWithLocationBase { … };
static DiagnosticSeverity getDiagnosticSeverity(SourceMgr::DiagKind DK) { … }
class DiagnosticInfoSrcMgr : public DiagnosticInfo { … };
void diagnoseDontCall(const CallInst &CI);
class DiagnosticInfoDontCall : public DiagnosticInfo { … };
}
#endif