blob: d25f1d6c836f4788d15d64b2cafe056fc2abf20c [file] [log] [blame]
// 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;
}