Relax frontend 8- and 16-bit type check (#590)

* Allow clustered pod args in ssbo to work despite contradictory command
line options assuming type mangled push constants will succeed
* fix tests
diff --git a/lib/FrontendPlugin.cpp b/lib/FrontendPlugin.cpp
index 9a7cbb9..a2f7eb8 100644
--- a/lib/FrontendPlugin.cpp
+++ b/lib/FrontendPlugin.cpp
@@ -630,21 +630,28 @@
               } else if (clspv::Option::PodArgsInPushConstants()) {
                 sc = clspv::Option::StorageClass::kPushConstant;
               }
-              if (contains_16bit &&
-                  !clspv::Option::Supports16BitStorageClass(sc)) {
-                Instance.getDiagnostics().Report(
-                    P->getSourceRange().getBegin(),
-                    CustomDiagnosticsIDMap
-                        [CustomDiagnosticUnsupported16BitStorage])
-                    << static_cast<int>(sc);
-              }
-              if (contains_8bit &&
-                  !clspv::Option::Supports8BitStorageClass(sc)) {
-                Instance.getDiagnostics().Report(
-                    P->getSourceRange().getBegin(),
-                    CustomDiagnosticsIDMap
-                        [CustomDiagnosticUnsupported8BitStorage])
-                    << static_cast<int>(sc);
+
+              if (type->isPointerType() ||
+                  sc != clspv::Option::StorageClass::kSSBO ||
+                  !clspv::Option::ClusterPodKernelArgs()) {
+                // For clustered pod args, assume we can fall back on
+                // type-mangling.
+                if (contains_16bit &&
+                    !clspv::Option::Supports16BitStorageClass(sc)) {
+                  Instance.getDiagnostics().Report(
+                      P->getSourceRange().getBegin(),
+                      CustomDiagnosticsIDMap
+                          [CustomDiagnosticUnsupported16BitStorage])
+                      << static_cast<int>(sc);
+                }
+                if (contains_8bit &&
+                    !clspv::Option::Supports8BitStorageClass(sc)) {
+                  Instance.getDiagnostics().Report(
+                      P->getSourceRange().getBegin(),
+                      CustomDiagnosticsIDMap
+                          [CustomDiagnosticUnsupported8BitStorage])
+                      << static_cast<int>(sc);
+                }
               }
             }