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