diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index c3b48d6..ba60b82 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -1724,7 +1724,7 @@
                 spv::StorageClass sc = builder.getStorageClass(id);
                 // Before SPIR-V 1.4, we only want to include Input and Output.
                 // Starting with SPIR-V 1.4, we want all globals.
-                if ((glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4 && sc != spv::StorageClassFunction) ||
+                if ((glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4 && builder.isGlobalStorage(id)) ||
                     (sc == spv::StorageClassInput || sc == spv::StorageClassOutput)) {
                     iOSet.insert(id);
                 }
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index fba26ad..151e935 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -2722,7 +2722,7 @@
                 setPrecision(id, precision);
             } else {
                 Id lValue = NoResult;
-                if (spvVersion >= Spv_1_4) {
+                if (spvVersion >= Spv_1_4 && isValidInitializer(accessChain.base)) {
                     // make a new function variable for this r-value, using an initializer,
                     // and mark it as NonWritable so that downstream it can be detected as a lookup
                     // table
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index ca126d3..83a7116 100644
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -248,6 +248,13 @@
         { return module.getInstruction(resultId)->getImmediateOperand(0); }
     StorageClass getStorageClass(Id resultId) const { return getTypeStorageClass(getTypeId(resultId)); }
 
+    bool isVariableOpCode(Op opcode) const { return opcode == OpVariable; }
+    bool isVariable(Id resultId) const { return isVariableOpCode(getOpCode(resultId)); }
+    bool isGlobalStorage(Id resultId) const { return getStorageClass(resultId) != StorageClassFunction; }
+    bool isGlobalVariable(Id resultId) const { return isVariable(resultId) && isGlobalStorage(resultId); }
+    // See if a resultId is valid for use as an initializer.
+    bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); }
+
     int getScalarTypeWidth(Id typeId) const
     {
         Id scalarTypeId = getScalarTypeId(typeId);
diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out
new file mode 100755
index 0000000..c689c4d
--- /dev/null
+++ b/Test/baseResults/spv.ext.World3x4.rahit.out
@@ -0,0 +1,145 @@
+spv.ext.World3x4.rahit
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 90
+
+                              Capability RayTracingProvisionalKHR
+                              Extension  "SPV_KHR_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint AnyHitKHR 4  "main" 43 60 78 87 89
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              Name 4  "main"
+                              Name 8  "k"
+                              Name 12  "ndx"
+                              Name 14  "col"
+                              Name 25  "row"
+                              Name 39  "p"
+                              Name 43  "gl_LaunchIDEXT"
+                              Name 53  "r"
+                              Name 60  "gl_WorldToObject3x4EXT"
+                              Name 66  "indexable"
+                              Name 72  "c"
+                              Name 78  "result"
+                              Name 87  "attribs"
+                              Name 89  "hitValue"
+                              Decorate 43(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+                              Decorate 60(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
+                              Decorate 78(result) DescriptorSet 0
+                              Decorate 78(result) Binding 0
+                              Decorate 89(hitValue) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:    6(float) Constant 1233125376
+              10:             TypeInt 32 1
+              11:             TypePointer Function 10(int)
+              13:     10(int) Constant 4294967295
+              15:     10(int) Constant 0
+              22:     10(int) Constant 3
+              23:             TypeBool
+              32:     10(int) Constant 4
+              35:     10(int) Constant 1
+              37:             TypeVector 10(int) 3
+              38:             TypePointer Function 37(ivec3)
+              40:             TypeInt 32 0
+              41:             TypeVector 40(int) 3
+              42:             TypePointer Input 41(ivec3)
+43(gl_LaunchIDEXT):     42(ptr) Variable Input
+              44:             TypeVector 40(int) 2
+              47:             TypeVector 10(int) 2
+              55:             TypeVector 6(float) 4
+              56:             TypeMatrix 55(fvec4) 3
+              57:             TypeVector 6(float) 3
+              58:             TypeMatrix 57(fvec3) 4
+              59:             TypePointer Input 58
+60(gl_WorldToObject3x4EXT):     59(ptr) Variable Input
+              65:             TypePointer Function 56
+              70:             TypeVector 10(int) 4
+              71:             TypePointer Function 70(ivec4)
+              76:             TypeImage 10(int) 3D nonsampled format:R32i
+              77:             TypePointer UniformConstant 76
+      78(result):     77(ptr) Variable UniformConstant
+              86:             TypePointer HitAttributeKHR 57(fvec3)
+     87(attribs):     86(ptr) Variable HitAttributeKHR
+              88:             TypePointer IncomingRayPayloadKHR 57(fvec3)
+    89(hitValue):     88(ptr) Variable IncomingRayPayloadKHR
+         4(main):           2 Function None 3
+               5:             Label
+            8(k):      7(ptr) Variable Function
+         12(ndx):     11(ptr) Variable Function
+         14(col):     11(ptr) Variable Function
+         25(row):     11(ptr) Variable Function
+           39(p):     38(ptr) Variable Function
+           53(r):      7(ptr) Variable Function
+   66(indexable):     65(ptr) Variable Function
+           72(c):     71(ptr) Variable Function
+                              Store 8(k) 9
+                              Store 12(ndx) 13
+                              Store 14(col) 15
+                              Branch 16
+              16:             Label
+                              LoopMerge 18 19 None
+                              Branch 20
+              20:             Label
+              21:     10(int) Load 14(col)
+              24:    23(bool) SLessThan 21 22
+                              BranchConditional 24 17 18
+              17:               Label
+                                Store 25(row) 15
+                                Branch 26
+              26:               Label
+                                LoopMerge 28 29 None
+                                Branch 30
+              30:               Label
+              31:     10(int)   Load 25(row)
+              33:    23(bool)   SLessThan 31 32
+                                BranchConditional 33 27 28
+              27:                 Label
+              34:     10(int)     Load 12(ndx)
+              36:     10(int)     IAdd 34 35
+                                  Store 12(ndx) 36
+              45:   41(ivec3)     Load 43(gl_LaunchIDEXT)
+              46:   44(ivec2)     VectorShuffle 45 45 0 1
+              48:   47(ivec2)     Bitcast 46
+              49:     10(int)     Load 12(ndx)
+              50:     10(int)     CompositeExtract 48 0
+              51:     10(int)     CompositeExtract 48 1
+              52:   37(ivec3)     CompositeConstruct 50 51 49
+                                  Store 39(p) 52
+              54:    6(float)     Load 8(k)
+              61:          58     Load 60(gl_WorldToObject3x4EXT)
+              62:          56     Transpose 61
+              63:     10(int)     Load 14(col)
+              64:     10(int)     Load 25(row)
+                                  Store 66(indexable) 62
+              67:      7(ptr)     AccessChain 66(indexable) 63 64
+              68:    6(float)     Load 67
+              69:    6(float)     FMul 54 68
+                                  Store 53(r) 69
+              73:    6(float)     Load 53(r)
+              74:     10(int)     ConvertFToS 73
+              75:   70(ivec4)     CompositeConstruct 74 15 15 35
+                                  Store 72(c) 75
+              79:          76     Load 78(result)
+              80:   37(ivec3)     Load 39(p)
+              81:   70(ivec4)     Load 72(c)
+                                  ImageWrite 79 80 81 SignExtend 
+                                  Branch 29
+              29:                 Label
+              82:     10(int)     Load 25(row)
+              83:     10(int)     IAdd 82 35
+                                  Store 25(row) 83
+                                  Branch 26
+              28:               Label
+                                Branch 19
+              19:               Label
+              84:     10(int)   Load 14(col)
+              85:     10(int)   IAdd 84 35
+                                Store 14(col) 85
+                                Branch 16
+              18:             Label
+                              Return
+                              FunctionEnd
diff --git a/Test/spv.ext.World3x4.rahit b/Test/spv.ext.World3x4.rahit
new file mode 100644
index 0000000..4f541f8
--- /dev/null
+++ b/Test/spv.ext.World3x4.rahit
@@ -0,0 +1,21 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+
+hitAttributeEXT vec3 attribs;
+layout(location = 0) rayPayloadInEXT vec3 hitValue;
+layout(set = 0, binding = 0, r32i) uniform iimage3D result;
+
+void main()
+{
+  float k = 1048576.0f;
+  int ndx = -1;
+  for (int col = 0; col < 3; col++)
+  for (int row = 0; row < 4; row++)
+  {
+    ndx++;
+    ivec3 p = ivec3(gl_LaunchIDEXT.xy, ndx);
+    float r = k * gl_WorldToObject3x4EXT[col][row];
+    ivec4 c = ivec4(int(r),0,0,1);
+    imageStore(result, p, c);
+  }
+}
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 9634262..714ef3c 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -560,6 +560,7 @@
         "spv.ext.RayGenShader.rgen",
         "spv.ext.RayGenShader11.rgen",
         "spv.ext.RayGenShaderArray.rgen",
+        "spv.ext.World3x4.rahit",
     })),
     FileNameAsCustomTestSuffix
 );
