diff --git a/src/spirv_shaderc.c b/src/spirv_shaderc.c
index 947827d6e6b8ebb88a44c900151abf6553358456..dd0feb1a687a74fbea1175c71eab18a980296706 100644
--- a/src/spirv_shaderc.c
+++ b/src/spirv_shaderc.c
@@ -105,13 +105,15 @@ static bool shaderc_compile(struct spirv_compiler *spirv, void *tactx,
 
     enum pl_log_level lev = errs ? PL_LOG_ERR : warn ? PL_LOG_INFO : PL_LOG_DEBUG;
 
+    int s = shaderc_result_get_compilation_status(res);
+    bool success = s == shaderc_compilation_status_success;
+    if (!success)
+        lev = PL_LOG_ERR;
+
     const char *msg = shaderc_result_get_error_message(res);
     if (msg[0])
         PL_MSG(spirv, lev, "shaderc output:\n%s", msg);
 
-    int s = shaderc_result_get_compilation_status(res);
-    bool success = s == shaderc_compilation_status_success;
-
     static const char *results[] = {
         [shaderc_compilation_status_success]            = "success",
         [shaderc_compilation_status_invalid_stage]      = "invalid stage",