1292915Sdim//===-- AMDGPUDiagnosticInfoUnsupported.h - Error reporting -----*- C++ -*-===//
2292915Sdim//
3292915Sdim//                     The LLVM Compiler Infrastructure
4292915Sdim//
5292915Sdim// This file is distributed under the University of Illinois Open Source
6292915Sdim// License. See LICENSE.TXT for details.
7292915Sdim//
8292915Sdim//===----------------------------------------------------------------------===//
9292915Sdim
10292915Sdim#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUDIAGNOSTICINFOUNSUPPORTED_H
11292915Sdim#define LLVM_LIB_TARGET_AMDGPU_AMDGPUDIAGNOSTICINFOUNSUPPORTED_H
12292915Sdim
13292915Sdim#include "llvm/IR/DiagnosticInfo.h"
14292915Sdim#include "llvm/IR/DiagnosticPrinter.h"
15292915Sdim
16292915Sdimnamespace llvm {
17292915Sdim
18292915Sdim/// Diagnostic information for unimplemented or unsupported feature reporting.
19292915Sdimclass DiagnosticInfoUnsupported : public DiagnosticInfo {
20292915Sdimprivate:
21292915Sdim  const Twine &Description;
22292915Sdim  const Function &Fn;
23292915Sdim
24292915Sdim  static int KindID;
25292915Sdim
26292915Sdim  static int getKindID() {
27292915Sdim    if (KindID == 0)
28292915Sdim      KindID = llvm::getNextAvailablePluginDiagnosticKind();
29292915Sdim    return KindID;
30292915Sdim  }
31292915Sdim
32292915Sdimpublic:
33292915Sdim  DiagnosticInfoUnsupported(const Function &Fn, const Twine &Desc,
34292915Sdim                            DiagnosticSeverity Severity = DS_Error);
35292915Sdim
36292915Sdim  const Function &getFunction() const { return Fn; }
37292915Sdim  const Twine &getDescription() const { return Description; }
38292915Sdim
39292915Sdim  void print(DiagnosticPrinter &DP) const override;
40292915Sdim
41292915Sdim  static bool classof(const DiagnosticInfo *DI) {
42292915Sdim    return DI->getKind() == getKindID();
43292915Sdim  }
44292915Sdim};
45292915Sdim
46292915Sdim}
47292915Sdim
48292915Sdim#endif
49