hlsl.semicolons.frag
Shader version: 500
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      Branch: Return with expression
0:17        'ps_output' ( temp structure{ temp 4-component vector of float color})
0:13  Function Definition: main( ( temp void)
0:13    Function Parameters: 
0:?     Sequence
0:13      Sequence
0:13        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:13          color: direct index for structure ( temp 4-component vector of float)
0:13            Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:13            Constant:
0:13              0 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
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      Branch: Return with expression
0:17        'ps_output' ( temp structure{ temp 4-component vector of float color})
0:13  Function Definition: main( ( temp void)
0:13    Function Parameters: 
0:?     Sequence
0:13      Sequence
0:13        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:13          color: direct index for structure ( temp 4-component vector of float)
0:13            Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:13            Constant:
0:13              0 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)

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

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