spv.noDeadDecorations.vert
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.


Linked vertex stage:


// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 32

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 22
                              Source ESSL 310
                              Name 4  "main"
                              Name 10  "func(f1;"
                              Name 9  "a"
                              Name 20  "gl_PerVertex"
                              MemberName 20(gl_PerVertex) 0  "gl_Position"
                              MemberName 20(gl_PerVertex) 1  "gl_PointSize"
                              Name 22  ""
                              Name 26  "param"
                              Decorate 10(func(f1;) RelaxedPrecision
                              Decorate 9(a) RelaxedPrecision
                              Decorate 12 RelaxedPrecision
                              Decorate 13 RelaxedPrecision
                              MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
                              Decorate 20(gl_PerVertex) Block
                              Decorate 27 RelaxedPrecision
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeFunction 6(float) 7(ptr)
              16:    6(float) Constant 3212836864
              19:             TypeVector 6(float) 4
20(gl_PerVertex):             TypeStruct 19(fvec4) 6(float)
              21:             TypePointer Output 20(gl_PerVertex)
              22:     21(ptr) Variable Output
              23:             TypeInt 32 1
              24:     23(int) Constant 0
              25:    6(float) Constant 0
              28:             TypeInt 32 0
              29:     28(int) Constant 0
              30:             TypePointer Output 6(float)
         4(main):           2 Function None 3
               5:             Label
       26(param):      7(ptr) Variable Function
                              Store 26(param) 25
              27:    6(float) FunctionCall 10(func(f1;) 26(param)
              31:     30(ptr) AccessChain 22 24 29
                              Store 31 27
                              Return
                              FunctionEnd
    10(func(f1;):    6(float) Function None 8
            9(a):      7(ptr) FunctionParameter
              11:             Label
              12:    6(float) Load 9(a)
              13:    6(float) FNegate 12
                              ReturnValue 13
                              FunctionEnd
