reader/spirv: Don't pass invalid programs to DecomposeStridedMatrix

This transform expects valid input.

Fixed: chromium:1233795
Change-Id: I6460bded0a7e89888a4b034e792db6dc07012127
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/60348
Auto-Submit: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/reader/spirv/parser.cc b/src/reader/spirv/parser.cc
index bcbc193..0f71d99 100644
--- a/src/reader/spirv/parser.cc
+++ b/src/reader/spirv/parser.cc
@@ -45,6 +45,9 @@
   ProgramBuilder output;
   CloneContext(&output, &program_with_disjoint_ast, false).Clone();
   auto program = Program(std::move(output));
+  if (!program.IsValid()) {
+    return program;
+  }
 
   // If the generated program contains matrices with a custom MatrixStride
   // attribute then we need to decompose these into an array of vectors