HLSL: Fix #1974: ignore input primitives on non-entry-point functions.
diff --git a/Test/baseResults/hlsl.semantic.geom.out b/Test/baseResults/hlsl.semantic.geom.out
index daf4eed..29ec235 100644
--- a/Test/baseResults/hlsl.semantic.geom.out
+++ b/Test/baseResults/hlsl.semantic.geom.out
@@ -66,6 +66,58 @@
 0:13      Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
 0:?         'VertexID' ( temp 3-element array of uint)
 0:?         'OutputStream' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:21  Function Definition: notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
+0:21    Function Parameters: 
+0:21      'VertexID' ( in 2-element array of uint)
+0:21      'OutputStream' ( out structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:?     Sequence
+0:23      Sequence
+0:23        Sequence
+0:23          move second child to first child ( temp float)
+0:?             'OutputStream.clip0' ( out float Position)
+0:23            clip0: direct index for structure ( temp float)
+0:23              's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23              Constant:
+0:23                0 (const int)
+0:?           Sequence
+0:23            move second child to first child ( temp float)
+0:23              direct index ( out float ClipDistance)
+0:?                 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
+0:23                Constant:
+0:23                  0 (const int)
+0:23              clip0: direct index for structure ( temp float)
+0:23                's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23                Constant:
+0:23                  1 (const int)
+0:?           Sequence
+0:23            move second child to first child ( temp float)
+0:23              direct index ( out float CullDistance)
+0:?                 'OutputStream.cull0' ( out 1-element array of float CullDistance)
+0:23                Constant:
+0:23                  0 (const int)
+0:23              cull0: direct index for structure ( temp float)
+0:23                's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23                Constant:
+0:23                  2 (const int)
+0:23          move second child to first child ( temp uint)
+0:?             'OutputStream.vpai' ( out uint ViewportIndex)
+0:23            vpai: direct index for structure ( temp uint)
+0:23              's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23              Constant:
+0:23                3 (const int)
+0:23          move second child to first child ( temp uint)
+0:?             'OutputStream.rtai' ( out uint Layer)
+0:23            rtai: direct index for structure ( temp uint)
+0:23              's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23              Constant:
+0:23                4 (const int)
+0:23          move second child to first child ( temp int)
+0:?             'OutputStream.ii' (layout( location=0) out int)
+0:23            ii: direct index for structure ( temp int)
+0:23              's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23              Constant:
+0:23                5 (const int)
+0:23        EmitVertex ( temp void)
 0:?   Linker Objects
 0:?     'VertexID' (layout( location=0) in 3-element array of uint)
 0:?     'OutputStream.clip0' ( out float Position)
@@ -146,6 +198,58 @@
 0:13      Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
 0:?         'VertexID' ( temp 3-element array of uint)
 0:?         'OutputStream' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:21  Function Definition: notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
+0:21    Function Parameters: 
+0:21      'VertexID' ( in 2-element array of uint)
+0:21      'OutputStream' ( out structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:?     Sequence
+0:23      Sequence
+0:23        Sequence
+0:23          move second child to first child ( temp float)
+0:?             'OutputStream.clip0' ( out float Position)
+0:23            clip0: direct index for structure ( temp float)
+0:23              's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23              Constant:
+0:23                0 (const int)
+0:?           Sequence
+0:23            move second child to first child ( temp float)
+0:23              direct index ( out float ClipDistance)
+0:?                 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
+0:23                Constant:
+0:23                  0 (const int)
+0:23              clip0: direct index for structure ( temp float)
+0:23                's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23                Constant:
+0:23                  1 (const int)
+0:?           Sequence
+0:23            move second child to first child ( temp float)
+0:23              direct index ( out float CullDistance)
+0:?                 'OutputStream.cull0' ( out 1-element array of float CullDistance)
+0:23                Constant:
+0:23                  0 (const int)
+0:23              cull0: direct index for structure ( temp float)
+0:23                's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23                Constant:
+0:23                  2 (const int)
+0:23          move second child to first child ( temp uint)
+0:?             'OutputStream.vpai' ( out uint ViewportIndex)
+0:23            vpai: direct index for structure ( temp uint)
+0:23              's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23              Constant:
+0:23                3 (const int)
+0:23          move second child to first child ( temp uint)
+0:?             'OutputStream.rtai' ( out uint Layer)
+0:23            rtai: direct index for structure ( temp uint)
+0:23              's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23              Constant:
+0:23                4 (const int)
+0:23          move second child to first child ( temp int)
+0:?             'OutputStream.ii' (layout( location=0) out int)
+0:23            ii: direct index for structure ( temp int)
+0:23              's' ( temp structure{ temp float clip0,  temp float clip0,  temp float cull0,  temp uint vpai,  temp uint rtai,  temp int ii})
+0:23              Constant:
+0:23                5 (const int)
+0:23        EmitVertex ( temp void)
 0:?   Linker Objects
 0:?     'VertexID' (layout( location=0) in 3-element array of uint)
 0:?     'OutputStream.clip0' ( out float Position)
@@ -158,7 +262,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 80008
-// Id's are bound by 65
+// Id's are bound by 88
 
                               Capability Geometry
                               Capability ClipDistance
@@ -166,7 +270,7 @@
                               Capability MultiViewport
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Geometry 4  "main" 20 29 34 40 45 50 57
+                              EntryPoint Geometry 4  "main" 28 37 42 48 53 58 65
                               ExecutionMode 4 Triangles
                               ExecutionMode 4 Invocations 1
                               ExecutionMode 4 OutputLineStrip
@@ -183,25 +287,29 @@
                               Name 17  "@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;"
                               Name 15  "VertexID"
                               Name 16  "OutputStream"
-                              Name 20  "OutputStream.clip0"
-                              Name 21  "s"
-                              Name 29  "OutputStream.clip0"
-                              Name 34  "OutputStream.cull0"
-                              Name 40  "OutputStream.vpai"
-                              Name 45  "OutputStream.rtai"
-                              Name 50  "OutputStream.ii"
-                              Name 55  "VertexID"
-                              Name 57  "VertexID"
-                              Name 59  "OutputStream"
-                              Name 60  "param"
-                              Name 62  "param"
-                              Decorate 20(OutputStream.clip0) BuiltIn Position
-                              Decorate 29(OutputStream.clip0) BuiltIn ClipDistance
-                              Decorate 34(OutputStream.cull0) BuiltIn CullDistance
-                              Decorate 40(OutputStream.vpai) BuiltIn ViewportIndex
-                              Decorate 45(OutputStream.rtai) BuiltIn Layer
-                              Decorate 50(OutputStream.ii) Location 0
-                              Decorate 57(VertexID) Location 0
+                              Name 25  "notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11;"
+                              Name 23  "VertexID"
+                              Name 24  "OutputStream"
+                              Name 28  "OutputStream.clip0"
+                              Name 29  "s"
+                              Name 37  "OutputStream.clip0"
+                              Name 42  "OutputStream.cull0"
+                              Name 48  "OutputStream.vpai"
+                              Name 53  "OutputStream.rtai"
+                              Name 58  "OutputStream.ii"
+                              Name 63  "VertexID"
+                              Name 65  "VertexID"
+                              Name 67  "OutputStream"
+                              Name 68  "param"
+                              Name 70  "param"
+                              Name 73  "s"
+                              Decorate 28(OutputStream.clip0) BuiltIn Position
+                              Decorate 37(OutputStream.clip0) BuiltIn ClipDistance
+                              Decorate 42(OutputStream.cull0) BuiltIn CullDistance
+                              Decorate 48(OutputStream.vpai) BuiltIn ViewportIndex
+                              Decorate 53(OutputStream.rtai) BuiltIn Layer
+                              Decorate 58(OutputStream.ii) Location 0
+                              Decorate 65(VertexID) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -213,69 +321,101 @@
            12(S):             TypeStruct 10(float) 10(float) 10(float) 6(int) 6(int) 11(int)
               13:             TypePointer Function 12(S)
               14:             TypeFunction 2 9(ptr) 13(ptr)
-              19:             TypePointer Output 10(float)
-20(OutputStream.clip0):     19(ptr) Variable Output
-              22:     11(int) Constant 0
-              23:             TypePointer Function 10(float)
-              26:      6(int) Constant 1
-              27:             TypeArray 10(float) 26
-              28:             TypePointer Output 27
-29(OutputStream.clip0):     28(ptr) Variable Output
-              30:     11(int) Constant 1
-34(OutputStream.cull0):     28(ptr) Variable Output
-              35:     11(int) Constant 2
-              39:             TypePointer Output 6(int)
-40(OutputStream.vpai):     39(ptr) Variable Output
-              41:     11(int) Constant 3
-              42:             TypePointer Function 6(int)
-45(OutputStream.rtai):     39(ptr) Variable Output
-              46:     11(int) Constant 4
-              49:             TypePointer Output 11(int)
-50(OutputStream.ii):     49(ptr) Variable Output
-              51:     11(int) Constant 5
-              52:             TypePointer Function 11(int)
-              56:             TypePointer Input 8
-    57(VertexID):     56(ptr) Variable Input
+              19:      6(int) Constant 2
+              20:             TypeArray 6(int) 19
+              21:             TypePointer Function 20
+              22:             TypeFunction 2 21(ptr) 13(ptr)
+              27:             TypePointer Output 10(float)
+28(OutputStream.clip0):     27(ptr) Variable Output
+              30:     11(int) Constant 0
+              31:             TypePointer Function 10(float)
+              34:      6(int) Constant 1
+              35:             TypeArray 10(float) 34
+              36:             TypePointer Output 35
+37(OutputStream.clip0):     36(ptr) Variable Output
+              38:     11(int) Constant 1
+42(OutputStream.cull0):     36(ptr) Variable Output
+              43:     11(int) Constant 2
+              47:             TypePointer Output 6(int)
+48(OutputStream.vpai):     47(ptr) Variable Output
+              49:     11(int) Constant 3
+              50:             TypePointer Function 6(int)
+53(OutputStream.rtai):     47(ptr) Variable Output
+              54:     11(int) Constant 4
+              57:             TypePointer Output 11(int)
+58(OutputStream.ii):     57(ptr) Variable Output
+              59:     11(int) Constant 5
+              60:             TypePointer Function 11(int)
+              64:             TypePointer Input 8
+    65(VertexID):     64(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-    55(VertexID):      9(ptr) Variable Function
-59(OutputStream):     13(ptr) Variable Function
-       60(param):      9(ptr) Variable Function
-       62(param):     13(ptr) Variable Function
-              58:           8 Load 57(VertexID)
-                              Store 55(VertexID) 58
-              61:           8 Load 55(VertexID)
-                              Store 60(param) 61
-              63:           2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 60(param) 62(param)
-              64:       12(S) Load 62(param)
-                              Store 59(OutputStream) 64
+    63(VertexID):      9(ptr) Variable Function
+67(OutputStream):     13(ptr) Variable Function
+       68(param):      9(ptr) Variable Function
+       70(param):     13(ptr) Variable Function
+              66:           8 Load 65(VertexID)
+                              Store 63(VertexID) 66
+              69:           8 Load 63(VertexID)
+                              Store 68(param) 69
+              71:           2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 68(param) 70(param)
+              72:       12(S) Load 70(param)
+                              Store 67(OutputStream) 72
                               Return
                               FunctionEnd
 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;):           2 Function None 14
     15(VertexID):      9(ptr) FunctionParameter
 16(OutputStream):     13(ptr) FunctionParameter
               18:             Label
-           21(s):     13(ptr) Variable Function
-              24:     23(ptr) AccessChain 21(s) 22
-              25:   10(float) Load 24
-                              Store 20(OutputStream.clip0) 25
-              31:     23(ptr) AccessChain 21(s) 30
-              32:   10(float) Load 31
-              33:     19(ptr) AccessChain 29(OutputStream.clip0) 22
-                              Store 33 32
-              36:     23(ptr) AccessChain 21(s) 35
-              37:   10(float) Load 36
-              38:     19(ptr) AccessChain 34(OutputStream.cull0) 22
-                              Store 38 37
-              43:     42(ptr) AccessChain 21(s) 41
-              44:      6(int) Load 43
-                              Store 40(OutputStream.vpai) 44
-              47:     42(ptr) AccessChain 21(s) 46
-              48:      6(int) Load 47
-                              Store 45(OutputStream.rtai) 48
-              53:     52(ptr) AccessChain 21(s) 51
-              54:     11(int) Load 53
-                              Store 50(OutputStream.ii) 54
+           29(s):     13(ptr) Variable Function
+              32:     31(ptr) AccessChain 29(s) 30
+              33:   10(float) Load 32
+                              Store 28(OutputStream.clip0) 33
+              39:     31(ptr) AccessChain 29(s) 38
+              40:   10(float) Load 39
+              41:     27(ptr) AccessChain 37(OutputStream.clip0) 30
+                              Store 41 40
+              44:     31(ptr) AccessChain 29(s) 43
+              45:   10(float) Load 44
+              46:     27(ptr) AccessChain 42(OutputStream.cull0) 30
+                              Store 46 45
+              51:     50(ptr) AccessChain 29(s) 49
+              52:      6(int) Load 51
+                              Store 48(OutputStream.vpai) 52
+              55:     50(ptr) AccessChain 29(s) 54
+              56:      6(int) Load 55
+                              Store 53(OutputStream.rtai) 56
+              61:     60(ptr) AccessChain 29(s) 59
+              62:     11(int) Load 61
+                              Store 58(OutputStream.ii) 62
+                              EmitVertex
+                              Return
+                              FunctionEnd
+25(notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11;):           2 Function None 22
+    23(VertexID):     21(ptr) FunctionParameter
+24(OutputStream):     13(ptr) FunctionParameter
+              26:             Label
+           73(s):     13(ptr) Variable Function
+              74:     31(ptr) AccessChain 73(s) 30
+              75:   10(float) Load 74
+                              Store 28(OutputStream.clip0) 75
+              76:     31(ptr) AccessChain 73(s) 38
+              77:   10(float) Load 76
+              78:     27(ptr) AccessChain 37(OutputStream.clip0) 30
+                              Store 78 77
+              79:     31(ptr) AccessChain 73(s) 43
+              80:   10(float) Load 79
+              81:     27(ptr) AccessChain 42(OutputStream.cull0) 30
+                              Store 81 80
+              82:     50(ptr) AccessChain 73(s) 49
+              83:      6(int) Load 82
+                              Store 48(OutputStream.vpai) 83
+              84:     50(ptr) AccessChain 73(s) 54
+              85:      6(int) Load 84
+                              Store 53(OutputStream.rtai) 85
+              86:     60(ptr) AccessChain 73(s) 59
+              87:     11(int) Load 86
+                              Store 58(OutputStream.ii) 87
                               EmitVertex
                               Return
                               FunctionEnd