[llvm] [Offload] Add Error Codes to PluginInterface (PR #138258)

Joseph Huber via llvm-commits llvm-commits at lists.llvm.org
Wed May 7 06:54:07 PDT 2025


================
@@ -58,6 +58,30 @@ struct GenericKernelTy;
 struct GenericDeviceTy;
 struct RecordReplayTy;
 
+enum class ErrorCode {
+#define OFFLOAD_ERRC(Name, _, Value) Name = Value,
+#include "OffloadErrcodes.inc"
+#undef OFFLOAD_ERRC
+};
+
+class OffloadErrorCategory : public std::error_category {
+  const char *name() const noexcept override { return "Offload Error"; }
+  std::string message(int ev) const override {
+    switch (static_cast<ErrorCode>(ev)) {
+#define OFFLOAD_ERRC(Name, Desc, Value)                                        \
+  case ErrorCode::Name:                                                        \
+    return #Desc;
+#include "OffloadErrcodes.inc"
+#undef OFFLOAD_ERRC
+    }
+  }
+};
+
+inline std::error_code make_error_code(ErrorCode EC) {
+  static OffloadErrorCategory Cat{};
+  return {static_cast<int>(EC), Cat};
+}
----------------
jhuber6 wrote:

That's a more compelling example, but I'm wondering if we shouldn't just convert it when we create the error rather than late. Doing it late requires disambiguating it, but if we just do it when we make it then it's pretty straightforward what it should be.

https://github.com/llvm/llvm-project/pull/138258


More information about the llvm-commits mailing list