                // Test (3) by checking whether the GC edge is reachable from
                // anything that could possibly result in the variable
                // containing a GCPointer. This is to eliminate false positives
                // in cases like:
                //
                //   Value var1;
                //   Value var2[10];
                //   cangc(&var1, var2);
                //   f(var1, var2);
                //
                // and maybe eventually if it is needed, handle initializations
                // to UndefinedValue() or NumberValue(42) (which *are* uses of
                // the variable, and do extend its live range to include the
                // initialization in the normal sense, but here we only care
                // about when a variable could possibly contain a GCPointer.)
                if (!isVariableGCLive(suppressed, variable, edge)) {
                    var lineText = findLocation(body, result.gcInfo.ppoint);
                    printErr(`NOTE: Ignoring uninitialized GCPointer variable ${name} in '${functionName}'  at ${lineText}`);
                    continue;
                }
                
