hlsl.semicolons.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: MyFunc( (temp void)
0:2    Function Parameters: 
0:8  Function Definition: MyFunc2( (temp void)
0:8    Function Parameters: 
0:13  Function Definition: main( (temp structure{temp 4-component vector of float color})
0:13    Function Parameters: 
0:?     Sequence
0:16      move second child to first child (temp 4-component vector of float)
0:16        color: direct index for structure (temp 4-component vector of float)
0:16          'ps_output' (temp structure{temp 4-component vector of float color})
0:16          Constant:
0:16            0 (const int)
0:16        Constant:
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:17      Sequence
0:17        Sequence
0:17          move second child to first child (temp 4-component vector of float)
0:?             'color' (layout(location=0 ) out 4-component vector of float)
0:17            color: direct index for structure (temp 4-component vector of float)
0:17              'ps_output' (temp structure{temp 4-component vector of float color})
0:17              Constant:
0:17                0 (const int)
0:17        Branch: Return
0:?   Linker Objects
0:?     'color' (layout(location=0 ) out 4-component vector of float)


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: MyFunc( (temp void)
0:2    Function Parameters: 
0:8  Function Definition: MyFunc2( (temp void)
0:8    Function Parameters: 
0:13  Function Definition: main( (temp structure{temp 4-component vector of float color})
0:13    Function Parameters: 
0:?     Sequence
0:16      move second child to first child (temp 4-component vector of float)
0:16        color: direct index for structure (temp 4-component vector of float)
0:16          'ps_output' (temp structure{temp 4-component vector of float color})
0:16          Constant:
0:16            0 (const int)
0:16        Constant:
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:17      Sequence
0:17        Sequence
0:17          move second child to first child (temp 4-component vector of float)
0:?             'color' (layout(location=0 ) out 4-component vector of float)
0:17            color: direct index for structure (temp 4-component vector of float)
0:17              'ps_output' (temp structure{temp 4-component vector of float color})
0:17              Constant:
0:17                0 (const int)
0:17        Branch: Return
0:?   Linker Objects
0:?     'color' (layout(location=0 ) out 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 22
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "main"
                              Name 6  "MyFunc("
                              Name 8  "MyFunc2("
                              Name 12  "PS_OUTPUT"
                              MemberName 12(PS_OUTPUT) 0  "color"
                              Name 14  "ps_output"
                              Name 22  "color"
                              Decorate 22(color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
              10:             TypeFloat 32
              11:             TypeVector 10(float) 4
   12(PS_OUTPUT):             TypeStruct 11(fvec4)
              13:             TypePointer Function 12(PS_OUTPUT)
              15:             TypeInt 32 1
              16:     15(int) Constant 0
              17:   10(float) Constant 1065353216
              18:   11(fvec4) ConstantComposite 17 17 17 17
              19:             TypePointer Function 11(fvec4)
              21:             TypePointer Output 11(fvec4)
       22(color):     21(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
   14(ps_output):     13(ptr) Variable Function
              20:     19(ptr) AccessChain 14(ps_output) 16
                              Store 20 18
              23:     19(ptr) AccessChain 14(ps_output) 16
              24:   11(fvec4) Load 23
                              Store 22(color) 24
                              Return
                              FunctionEnd
      6(MyFunc():           2 Function None 3
               7:             Label
                              Return
                              FunctionEnd
     8(MyFunc2():           2 Function None 3
               9:             Label
                              Return
                              FunctionEnd
