Fix #1471: Merge shift amounts for different sets: --stb ... --std ...
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 554ea8f..e49b26e 100755
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -322,7 +322,7 @@
 
     for (int lang = langMin; lang < langMax; ++lang) {
         if (!perSetBase.empty())
-            baseBindingForSet[res][lang] = perSetBase;
+            baseBindingForSet[res][lang].insert(perSetBase.begin(), perSetBase.end());
         else
             baseBinding[res][lang] = singleBase;
     }
diff --git a/Test/baseResults/hlsl.shift.per-set.frag.out b/Test/baseResults/hlsl.shift.per-set.frag.out
index f7ae02e..7c7d383 100644
--- a/Test/baseResults/hlsl.shift.per-set.frag.out
+++ b/Test/baseResults/hlsl.shift.per-set.frag.out
@@ -62,12 +62,13 @@
 0:56        'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1})
 0:56        Constant:
 0:56          0 (const uint)
-0:58      Branch: Return with expression
-0:58        Constant:
-0:58          0.000000
-0:58          0.000000
-0:58          0.000000
-0:58          0.000000
+0:57      'ts6' (layout( set=6 binding=1) uniform texture3D)
+0:59      Branch: Return with expression
+0:59        Constant:
+0:59          0.000000
+0:59          0.000000
+0:59          0.000000
+0:59          0.000000
 0:34  Function Definition: main( ( temp void)
 0:34    Function Parameters: 
 0:?     Sequence
@@ -80,6 +81,7 @@
 0:?     't1' (layout( set=1 binding=1) uniform texture1D)
 0:?     't2' (layout( set=1 binding=2) uniform texture2D)
 0:?     't3' (layout( set=2 binding=1) uniform texture3D)
+0:?     'ts6' (layout( set=6 binding=1) uniform texture3D)
 0:?     't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data})
 0:?     't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
 0:?     't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer)
@@ -162,12 +164,13 @@
 0:56        'anon@1' (layout( binding=7 row_major std430) readonly buffer block{layout( row_major std430) buffer int tb1})
 0:56        Constant:
 0:56          0 (const uint)
-0:58      Branch: Return with expression
-0:58        Constant:
-0:58          0.000000
-0:58          0.000000
-0:58          0.000000
-0:58          0.000000
+0:57      'ts6' (layout( set=6 binding=1) uniform texture3D)
+0:59      Branch: Return with expression
+0:59        Constant:
+0:59          0.000000
+0:59          0.000000
+0:59          0.000000
+0:59          0.000000
 0:34  Function Definition: main( ( temp void)
 0:34    Function Parameters: 
 0:?     Sequence
@@ -180,6 +183,7 @@
 0:?     't1' (layout( set=1 binding=1) uniform texture1D)
 0:?     't2' (layout( set=1 binding=2) uniform texture2D)
 0:?     't3' (layout( set=2 binding=1) uniform texture3D)
+0:?     'ts6' (layout( set=6 binding=1) uniform texture3D)
 0:?     't4' (layout( set=3 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of 4-component vector of float @data})
 0:?     't5' (layout( set=3 binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
 0:?     't6' (layout( set=3 binding=3 rgba32f) uniform textureBuffer)
@@ -212,6 +216,7 @@
 u6.@data: offset 0, type 1406, size 1, index 3, binding -1, stages 16
 cb1: offset 0, type 1404, size 1, index 4, binding -1, stages 16
 tb1: offset 0, type 1404, size 1, index 5, binding -1, stages 16
+ts6: offset -1, type 8b5f, size 1, index -1, binding 71, stages 16
 
 Uniform block reflection:
 t4: offset -1, type ffffffff, size 0, index -1, binding 21, stages 0
diff --git a/Test/hlsl.shift.per-set.frag b/Test/hlsl.shift.per-set.frag
old mode 100644
new mode 100755
index 9c29f9d..d7c0243
--- a/Test/hlsl.shift.per-set.frag
+++ b/Test/hlsl.shift.per-set.frag
@@ -6,7 +6,7 @@
 Texture1D <float4> t1 : register(t1, space1);
 Texture2D <float4> t2 : register(t2, space1);
 Texture3D <float4> t3 : register(t1, space2);
-
+Texture3D <float4> ts6 : register(t1, space6);
 StructuredBuffer<float4> t4 : register(t1, space3);
 
 ByteAddressBuffer t5 : register(t2, space3);
@@ -54,6 +54,7 @@
 
     cb1;
     tb1;
+    ts6;
 
     return 0;
 }
diff --git a/Test/runtests b/Test/runtests
index 8e6832d..ddd77ce 100755
--- a/Test/runtests
+++ b/Test/runtests
@@ -112,7 +112,7 @@
 # Testing per-descriptor-set IO map shift
 #
 echo 'Testing per-descriptor-set IO map shift'
-$EXE -e main --hlsl-iomap --ssb 10 1 15 2 --stb 20 --stb 25 2 --suavb 30 --suavb 40 2 --sub 50 6 -i -q -D -Od -V hlsl.shift.per-set.frag > $TARGETDIR/hlsl.shift.per-set.frag.out || HASERROR=1
+$EXE -e main --hlsl-iomap --ssb 10 1 15 2 --stb 20 --stb 25 2 --stb 70 6 --suavb 30 --suavb 40 2 --sub 50 6 -i -q -D -Od -V hlsl.shift.per-set.frag > $TARGETDIR/hlsl.shift.per-set.frag.out || HASERROR=1
 diff -b $BASEDIR/hlsl.shift.per-set.frag.out $TARGETDIR/hlsl.shift.per-set.frag.out || HASERROR=1
 
 #