diff --git a/source/val/validate_builtins.cpp b/source/val/validate_builtins.cpp
index b476e78..bcd691f 100644
--- a/source/val/validate_builtins.cpp
+++ b/source/val/validate_builtins.cpp
@@ -60,12 +60,22 @@
                                const Instruction& inst,
                                uint32_t* underlying_type) {
   if (decoration.struct_member_index() != Decoration::kInvalidMember) {
-    assert(inst.opcode() == SpvOpTypeStruct);
+    if (inst.opcode() != SpvOpTypeStruct) {
+      return _.diag(SPV_ERROR_INVALID_DATA, &inst)
+             << GetIdDesc(inst)
+             << "Attempted to get underlying data type via member index for "
+                "non-struct type.";
+    }
     *underlying_type = inst.word(decoration.struct_member_index() + 2);
     return SPV_SUCCESS;
   }
 
-  assert(inst.opcode() != SpvOpTypeStruct);
+  if (inst.opcode() == SpvOpTypeStruct) {
+    return _.diag(SPV_ERROR_INVALID_DATA, &inst)
+           << GetIdDesc(inst)
+           << " did not find an member index to get underlying data type for "
+              "struct type.";
+  }
 
   if (spvOpcodeIsConstant(inst.opcode())) {
     *underlying_type = inst.type_id();
diff --git a/test/val/val_builtins_test.cpp b/test/val/val_builtins_test.cpp
index c8b2188..cff9d4a 100644
--- a/test/val/val_builtins_test.cpp
+++ b/test/val/val_builtins_test.cpp
@@ -2864,6 +2864,33 @@
   EXPECT_THAT(getDiagnosticString(), HasSubstr("is not an int scalar"));
 }
 
+TEST_F(ValidateBuiltIns, GetUnderlyingTypeNoAssert) {
+  std::string spirv = R"(
+                      OpCapability Shader
+                      OpMemoryModel Logical GLSL450
+                      OpEntryPoint Fragment %4 "PSMa" %12 %17
+                      OpExecutionMode %4 OriginUpperLeft
+                      OpDecorate %gl_PointCoord BuiltIn PointCoord
+              %void = OpTypeVoid
+                 %3 = OpTypeFunction %void
+             %float = OpTypeFloat 32
+           %v4float = OpTypeVector %float 4
+       %gl_PointCoord = OpTypeStruct %v4float
+       %_ptr_Input_v4float = OpTypePointer Input %v4float
+       %_ptr_Output_v4float = OpTypePointer Output %v4float
+                %12 = OpVariable %_ptr_Input_v4float Input
+                %17 = OpVariable %_ptr_Output_v4float Output
+                 %4 = OpFunction %void None %3
+                %15 = OpLabel
+                      OpReturn
+                      OpFunctionEnd)";
+  CompileSuccessfully(spirv, SPV_ENV_VULKAN_1_1);
+  ASSERT_EQ(SPV_ERROR_INVALID_DATA, ValidateInstructions(SPV_ENV_VULKAN_1_1));
+  EXPECT_THAT(getDiagnosticString(),
+              HasSubstr("did not find an member index to get underlying data "
+                        "type"));
+}
+
 }  // namespace
 }  // namespace val
 }  // namespace spvtools
