diff --git a/src/dawn/native/CompilationMessages.cpp b/src/dawn/native/CompilationMessages.cpp
index c3feb40..64f23c5 100644
--- a/src/dawn/native/CompilationMessages.cpp
+++ b/src/dawn/native/CompilationMessages.cpp
@@ -237,19 +237,17 @@
     size_t errorCount = 0;
     for (auto& diag : diagnostics) {
         switch (diag.severity) {
-            case (tint::diag::Severity::Fatal):
-            case (tint::diag::Severity::Error):
-            case (tint::diag::Severity::InternalCompilerError): {
+            case tint::diag::Severity::Error: {
                 errorCount++;
                 messageList.Add(diag);
                 break;
             }
-            case (tint::diag::Severity::Warning): {
+            case tint::diag::Severity::Warning: {
                 warningCount++;
                 messageList.Add(diag);
                 break;
             }
-            case (tint::diag::Severity::Note): {
+            case tint::diag::Severity::Note: {
                 messageList.Add(diag);
                 break;
             }
diff --git a/src/tint/lang/wgsl/diagnostic_severity.cc b/src/tint/lang/wgsl/diagnostic_severity.cc
index d47944d..4fd7c55 100644
--- a/src/tint/lang/wgsl/diagnostic_severity.cc
+++ b/src/tint/lang/wgsl/diagnostic_severity.cc
@@ -49,7 +49,7 @@
         case DiagnosticSeverity::kInfo:
             return diag::Severity::Note;
         default:
-            return diag::Severity::InternalCompilerError;
+            return diag::Severity::Error;
     }
 }
 
diff --git a/src/tint/lang/wgsl/diagnostic_severity.cc.tmpl b/src/tint/lang/wgsl/diagnostic_severity.cc.tmpl
index fdc3a8d..ff0f70e 100644
--- a/src/tint/lang/wgsl/diagnostic_severity.cc.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_severity.cc.tmpl
@@ -26,7 +26,7 @@
         case DiagnosticSeverity::kInfo:
             return diag::Severity::Note;
         default:
-            return diag::Severity::InternalCompilerError;
+            return diag::Severity::Error;
     }
 }
 
diff --git a/src/tint/lang/wgsl/ls/diagnostics.cc b/src/tint/lang/wgsl/ls/diagnostics.cc
index 58ed542..98ff03c 100644
--- a/src/tint/lang/wgsl/ls/diagnostics.cc
+++ b/src/tint/lang/wgsl/ls/diagnostics.cc
@@ -49,8 +49,6 @@
                 d.severity = lsp::DiagnosticSeverity::kWarning;
                 break;
             case diag::Severity::Error:
-            case diag::Severity::InternalCompilerError:
-            case diag::Severity::Fatal:
                 d.severity = lsp::DiagnosticSeverity::kError;
                 break;
         }
diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index b1a1775..ba65744 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -5048,7 +5048,7 @@
         TINT_ICE() << msg;
     }
     diag::Diagnostic err{};
-    err.severity = diag::Severity::InternalCompilerError;
+    err.severity = diag::Severity::Error;
     err.system = diag::System::Resolver;
     err.source = source;
     diagnostics_.Add(std::move(err)) << msg;
diff --git a/src/tint/utils/diagnostic/diagnostic.h b/src/tint/utils/diagnostic/diagnostic.h
index 69f77d2..5c71762 100644
--- a/src/tint/utils/diagnostic/diagnostic.h
+++ b/src/tint/utils/diagnostic/diagnostic.h
@@ -28,8 +28,8 @@
 #ifndef SRC_TINT_UTILS_DIAGNOSTIC_DIAGNOSTIC_H_
 #define SRC_TINT_UTILS_DIAGNOSTIC_DIAGNOSTIC_H_
 
+#include <cstdint>
 #include <memory>
-#include <ostream>
 #include <string>
 #include <utility>
 
@@ -41,7 +41,7 @@
 namespace tint::diag {
 
 /// Severity is an enumerator of diagnostic severities.
-enum class Severity { Note, Warning, Error, InternalCompilerError, Fatal };
+enum class Severity : uint8_t { Note, Warning, Error };
 
 /// @return true iff `a` is more than, or of equal severity to `b`
 inline bool operator>=(Severity a, Severity b) {
@@ -216,23 +216,6 @@
         return Add(std::move(error));
     }
 
-    /// Adds an internal compiler error message to the end of this list.
-    /// @param system the system raising the error message
-    /// @param source the source of the internal compiler error
-    /// @param file the Source::File owned by this diagnostic
-    /// @returns a reference to the new diagnostic.
-    /// @note The returned reference must not be used after the list is mutated again.
-    diag::Diagnostic& AddIce(System system,
-                             const Source& source,
-                             std::shared_ptr<Source::File> file) {
-        diag::Diagnostic ice{};
-        ice.severity = diag::Severity::InternalCompilerError;
-        ice.system = system;
-        ice.source = source;
-        ice.owned_file = std::move(file);
-        return Add(std::move(ice));
-    }
-
     /// @returns true iff the diagnostic list contains errors diagnostics (or of
     /// higher severity).
     bool ContainsErrors() const { return error_count_ > 0; }
diff --git a/src/tint/utils/diagnostic/diagnostic_test.cc b/src/tint/utils/diagnostic/diagnostic_test.cc
index 3d76f1e..9a00566 100644
--- a/src/tint/utils/diagnostic/diagnostic_test.cc
+++ b/src/tint/utils/diagnostic/diagnostic_test.cc
@@ -36,7 +36,7 @@
 TEST(DiagListTest, CtorInitializerList) {
     Diagnostic err_a, err_b;
     err_a.severity = Severity::Error;
-    err_b.severity = Severity::Fatal;
+    err_b.severity = Severity::Warning;
     List list{err_a, err_b};
     EXPECT_EQ(list.Count(), 2u);
 }
@@ -44,7 +44,7 @@
 TEST(DiagListTest, CtorVectorRef) {
     Diagnostic err_a, err_b;
     err_a.severity = Severity::Error;
-    err_b.severity = Severity::Fatal;
+    err_b.severity = Severity::Warning;
     List list{Vector{err_a, err_b}};
     EXPECT_EQ(list.Count(), 2u);
 }
diff --git a/src/tint/utils/diagnostic/formatter.cc b/src/tint/utils/diagnostic/formatter.cc
index 9fd279b..5b5c574 100644
--- a/src/tint/utils/diagnostic/formatter.cc
+++ b/src/tint/utils/diagnostic/formatter.cc
@@ -50,10 +50,6 @@
             return "warning";
         case Severity::Error:
             return "error";
-        case Severity::InternalCompilerError:
-            return "internal compiler error";
-        case Severity::Fatal:
-            return "fatal";
     }
     return "";
 }
@@ -127,10 +123,6 @@
             case Severity::Error:
                 style = style::Error + style::Bold;
                 break;
-            case Severity::Fatal:
-            case Severity::InternalCompilerError:
-                style = style::Fatal + style::Bold;
-                break;
         }
         prefix.Push(TextAndStyle{ToString(diag.severity), style});
     }
diff --git a/src/tint/utils/diagnostic/formatter_test.cc b/src/tint/utils/diagnostic/formatter_test.cc
index 6d77367..320b6b4 100644
--- a/src/tint/utils/diagnostic/formatter_test.cc
+++ b/src/tint/utils/diagnostic/formatter_test.cc
@@ -74,14 +74,6 @@
                                      Source{Source::Range{{3, 16}, {3, 21}}, &ascii_file},
                                      "hiss",
                                      System::Test);
-    Diagnostic ascii_diag_ice = Diag(Severity::InternalCompilerError,
-                                     Source{Source::Range{{4, 16}, {4, 19}}, &ascii_file},
-                                     "unreachable",
-                                     System::Test);
-    Diagnostic ascii_diag_fatal = Diag(Severity::Fatal,
-                                       Source{Source::Range{{4, 16}, {4, 19}}, &ascii_file},
-                                       "nothing",
-                                       System::Test);
 
     Diagnostic utf8_diag_note = Diag(Severity::Note,
                                      Source{Source::Range{Source::Location{1, 15}}, &utf8_file},
@@ -95,14 +87,6 @@
                                     Source{Source::Range{{3, 15}, {3, 20}}, &utf8_file},
                                     "hiss",
                                     System::Test);
-    Diagnostic utf8_diag_ice = Diag(Severity::InternalCompilerError,
-                                    Source{Source::Range{{4, 15}, {4, 18}}, &utf8_file},
-                                    "unreachable",
-                                    System::Test);
-    Diagnostic utf8_diag_fatal = Diag(Severity::Fatal,
-                                      Source{Source::Range{{4, 15}, {4, 18}}, &utf8_file},
-                                      "nothing",
-                                      System::Test);
 };
 
 TEST_F(DiagFormatterTest, Simple) {
@@ -264,28 +248,6 @@
     ASSERT_EQ(expect, got);
 }
 
-TEST_F(DiagFormatterTest, ICE) {
-    Formatter fmt{{}};
-    auto got = fmt.Format(List{ascii_diag_ice}).Plain();
-    auto* expect = R"(file.name:4:16 internal compiler error: unreachable
-the  snail  says  ???
-                  ^^^
-
-)";
-    ASSERT_EQ(expect, got);
-}
-
-TEST_F(DiagFormatterTest, Fatal) {
-    Formatter fmt{{}};
-    auto got = fmt.Format(List{ascii_diag_fatal}).Plain();
-    auto* expect = R"(file.name:4:16 fatal: nothing
-the  snail  says  ???
-                  ^^^
-
-)";
-    ASSERT_EQ(expect, got);
-}
-
 TEST_F(DiagFormatterTest, RangeOOB) {
     Formatter fmt{{true, true, true, true}};
     diag::List list;
