// RUN: %dxc -T vs_6_0 -E main %s | FileCheck %s

// There is no interface variable for VSIn or VSOut empty structs (See OpEntryPoint below).

struct VSIn {};

struct VSOut {};

VSOut main(VSIn input)
{
  VSOut result;
  return result;
}

// CHECK-WHOLE-SPIR-V:
// OpCapability Shader
// OpMemoryModel Logical GLSL450
// OpEntryPoint Vertex %main "main"
// OpSource HLSL 600
// OpName %main "main"
// OpName %VSIn "VSIn"
// OpName %param_var_input "param.var.input"
// OpName %VSOut "VSOut"
// OpName %src_main "src.main"
// OpName %input "input"
// OpName %bb_entry "bb.entry"
// OpName %result "result"
// %void = OpTypeVoid
// %3 = OpTypeFunction %void
// %VSIn = OpTypeStruct
// %_ptr_Function_VSIn = OpTypePointer Function %VSIn
// %VSOut = OpTypeStruct
// %12 = OpTypeFunction %VSOut %_ptr_Function_VSIn
// %_ptr_Function_VSOut = OpTypePointer Function %VSOut
// %main = OpFunction %void None %3
// %4 = OpLabel
// %param_var_input = OpVariable %_ptr_Function_VSIn Function
// %8 = OpCompositeConstruct %VSIn
// %10 = OpFunctionCall %VSOut %src_main %param_var_input
// OpReturn
// OpFunctionEnd
// %src_main = OpFunction %VSOut None %12
// %input = OpFunctionParameter %_ptr_Function_VSIn
// %bb_entry = OpLabel
// %result = OpVariable %_ptr_Function_VSOut Function
// %17 = OpLoad %VSOut %result
// OpReturnValue %17
// OpFunctionEnd
