spv.functionCall.frag
WARNING: 0:3: varying deprecated in version 130; may be removed in future release
WARNING: 0:4: varying deprecated in version 130; may be removed in future release
WARNING: 0:5: varying deprecated in version 130; may be removed in future release


Linked fragment stage:


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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 35 58 69 75
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 11  "foo(vf4;"
                              Name 10  "bar"
                              Name 13  "bar("
                              Name 16  "unreachableReturn("
                              Name 18  "missingReturn("
                              Name 21  "h"
                              Name 35  "d"
                              Name 56  "color"
                              Name 58  "BaseColor"
                              Name 59  "param"
                              Name 64  "f"
                              Name 66  "g"
                              Name 69  "gl_FragColor"
                              Name 75  "bigColor"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypeFunction 6(float) 8(ptr)
              15:             TypeFunction 6(float)
              20:             TypePointer Private 6(float)
           21(h):     20(ptr) Variable Private
              22:    6(float) Constant 0
              23:             TypeInt 32 0
              24:     23(int) Constant 0
              25:             TypePointer Function 6(float)
              28:     23(int) Constant 1
              34:             TypePointer Input 6(float)
           35(d):     34(ptr) Variable Input
              37:    6(float) Constant 1082549862
              38:             TypeBool
              42:    6(float) Constant 1067030938
              45:    6(float) Constant 1083179008
              53:    6(float) Constant 1081711002
              57:             TypePointer Input 7(fvec4)
   58(BaseColor):     57(ptr) Variable Input
              68:             TypePointer Output 7(fvec4)
69(gl_FragColor):     68(ptr) Variable Output
    75(bigColor):     57(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
       56(color):      8(ptr) Variable Function
       59(param):      8(ptr) Variable Function
           64(f):     25(ptr) Variable Function
           66(g):     25(ptr) Variable Function
                              Store 21(h) 22
              60:    7(fvec4) Load 58(BaseColor)
                              Store 59(param) 60
              61:    6(float) FunctionCall 11(foo(vf4;) 59(param)
              62:    7(fvec4) CompositeConstruct 61 61 61 61
                              Store 56(color) 62
              63:           2 FunctionCall 13(bar()
              65:    6(float) FunctionCall 16(unreachableReturn()
                              Store 64(f) 65
              67:    6(float) FunctionCall 18(missingReturn()
                              Store 66(g) 67
              70:    7(fvec4) Load 56(color)
              71:    6(float) Load 64(f)
              72:    7(fvec4) VectorTimesScalar 70 71
              73:    6(float) Load 21(h)
              74:    7(fvec4) VectorTimesScalar 72 73
                              Store 69(gl_FragColor) 74
                              Return
                              FunctionEnd
    11(foo(vf4;):    6(float) Function None 9
         10(bar):      8(ptr) FunctionParameter
              12:             Label
              26:     25(ptr) AccessChain 10(bar) 24
              27:    6(float) Load 26
              29:     25(ptr) AccessChain 10(bar) 28
              30:    6(float) Load 29
              31:    6(float) FAdd 27 30
                              ReturnValue 31
                              FunctionEnd
        13(bar():           2 Function None 3
              14:             Label
                              Return
                              FunctionEnd
16(unreachableReturn():    6(float) Function None 15
              17:             Label
              36:    6(float) Load 35(d)
              39:    38(bool) FOrdLessThan 36 37
                              SelectionMerge 41 None
                              BranchConditional 39 40 44
              40:               Label
                                ReturnValue 42
              44:               Label
                                ReturnValue 45
              41:             Label
              47:    6(float) Undef
                              ReturnValue 47
                              FunctionEnd
18(missingReturn():    6(float) Function None 15
              19:             Label
              48:    6(float) Load 35(d)
              49:    38(bool) FOrdLessThan 48 45
                              SelectionMerge 51 None
                              BranchConditional 49 50 51
              50:               Label
              52:    6(float)   Load 35(d)
                                Store 21(h) 52
                                ReturnValue 53
              51:             Label
              55:    6(float) Undef
                              ReturnValue 55
                              FunctionEnd
