Module Name: src Committed By: rillig Date: Sat Nov 28 19:12:28 UTC 2020
Modified Files: src/usr.bin/make: arch.c compat.c job.c make.c make.h parse.c suff.c targ.c Log Message: make(1): reduce memory allocation for GNode.parents and GNode.children To generate a diff of this commit: cvs rdiff -u -r1.178 -r1.179 src/usr.bin/make/arch.c cvs rdiff -u -r1.193 -r1.194 src/usr.bin/make/compat.c cvs rdiff -u -r1.332 -r1.333 src/usr.bin/make/job.c cvs rdiff -u -r1.219 -r1.220 src/usr.bin/make/make.c cvs rdiff -u -r1.221 -r1.222 src/usr.bin/make/make.h cvs rdiff -u -r1.454 -r1.455 src/usr.bin/make/parse.c cvs rdiff -u -r1.309 -r1.310 src/usr.bin/make/suff.c cvs rdiff -u -r1.142 -r1.143 src/usr.bin/make/targ.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/arch.c diff -u src/usr.bin/make/arch.c:1.178 src/usr.bin/make/arch.c:1.179 --- src/usr.bin/make/arch.c:1.178 Mon Nov 23 19:02:54 2020 +++ src/usr.bin/make/arch.c Sat Nov 28 19:12:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: arch.c,v 1.178 2020/11/23 19:02:54 rillig Exp $ */ +/* $NetBSD: arch.c,v 1.179 2020/11/28 19:12:28 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -125,7 +125,7 @@ #include "config.h" /* "@(#)arch.c 8.2 (Berkeley) 1/2/94" */ -MAKE_RCSID("$NetBSD: arch.c,v 1.178 2020/11/23 19:02:54 rillig Exp $"); +MAKE_RCSID("$NetBSD: arch.c,v 1.179 2020/11/28 19:12:28 rillig Exp $"); typedef struct List ArchList; typedef struct ListNode ArchListNode; @@ -925,7 +925,7 @@ Arch_UpdateMemberMTime(GNode *gn) { GNodeListNode *ln; - for (ln = gn->parents->first; ln != NULL; ln = ln->next) { + for (ln = gn->parents.first; ln != NULL; ln = ln->next) { GNode *pgn = ln->datum; if (pgn->type & OP_ARCHV) { @@ -1021,9 +1021,9 @@ Arch_LibOODate(GNode *gn) if (gn->type & OP_PHONY) { oodate = TRUE; - } else if (!GNode_IsTarget(gn) && Lst_IsEmpty(gn->children)) { + } else if (!GNode_IsTarget(gn) && Lst_IsEmpty(&gn->children)) { oodate = FALSE; - } else if ((!Lst_IsEmpty(gn->children) && gn->youngestChild == NULL) || + } else if ((!Lst_IsEmpty(&gn->children) && gn->youngestChild == NULL) || (gn->mtime > now) || (gn->youngestChild != NULL && gn->mtime < gn->youngestChild->mtime)) { Index: src/usr.bin/make/compat.c diff -u src/usr.bin/make/compat.c:1.193 src/usr.bin/make/compat.c:1.194 --- src/usr.bin/make/compat.c:1.193 Sat Nov 28 18:55:52 2020 +++ src/usr.bin/make/compat.c Sat Nov 28 19:12:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: compat.c,v 1.193 2020/11/28 18:55:52 rillig Exp $ */ +/* $NetBSD: compat.c,v 1.194 2020/11/28 19:12:28 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -96,7 +96,7 @@ #include "pathnames.h" /* "@(#)compat.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: compat.c,v 1.193 2020/11/28 18:55:52 rillig Exp $"); +MAKE_RCSID("$NetBSD: compat.c,v 1.194 2020/11/28 19:12:28 rillig Exp $"); static GNode *curTarg = NULL; static pid_t compatChild; @@ -487,7 +487,7 @@ MakeUnmade(GNode *const gn, GNode *const if (!(gn->type & OP_MADE)) Suff_FindDeps(gn); - MakeNodes(gn->children, gn); + MakeNodes(&gn->children, gn); if (!(gn->flags & REMAKE)) { gn->made = ABORTED; Index: src/usr.bin/make/job.c diff -u src/usr.bin/make/job.c:1.332 src/usr.bin/make/job.c:1.333 --- src/usr.bin/make/job.c:1.332 Sat Nov 28 18:55:52 2020 +++ src/usr.bin/make/job.c Sat Nov 28 19:12:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.332 2020/11/28 18:55:52 rillig Exp $ */ +/* $NetBSD: job.c,v 1.333 2020/11/28 19:12:28 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -143,7 +143,7 @@ #include "trace.h" /* "@(#)job.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: job.c,v 1.332 2020/11/28 18:55:52 rillig Exp $"); +MAKE_RCSID("$NetBSD: job.c,v 1.333 2020/11/28 19:12:28 rillig Exp $"); /* A shell defines how the commands are run. All commands for a target are * written into a single file, which is then given to the shell to execute @@ -1177,7 +1177,7 @@ Job_CheckCommands(GNode *gn, void (*abor return TRUE; if (!Lst_IsEmpty(&gn->commands)) return TRUE; - if ((gn->type & OP_LIB) && !Lst_IsEmpty(gn->children)) + if ((gn->type & OP_LIB) && !Lst_IsEmpty(&gn->children)) return TRUE; /* @@ -2451,7 +2451,7 @@ int Job_Finish(void) { GNode *endNode = Targ_GetEndNode(); - if (!Lst_IsEmpty(&endNode->commands) || !Lst_IsEmpty(endNode->children)) { + if (!Lst_IsEmpty(&endNode->commands) || !Lst_IsEmpty(&endNode->children)) { if (job_errors != 0) { Error("Errors reported so .END ignored"); } else { Index: src/usr.bin/make/make.c diff -u src/usr.bin/make/make.c:1.219 src/usr.bin/make/make.c:1.220 --- src/usr.bin/make/make.c:1.219 Sat Nov 28 18:55:52 2020 +++ src/usr.bin/make/make.c Sat Nov 28 19:12:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: make.c,v 1.219 2020/11/28 18:55:52 rillig Exp $ */ +/* $NetBSD: make.c,v 1.220 2020/11/28 19:12:28 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -102,7 +102,7 @@ #include "job.h" /* "@(#)make.c 8.1 (Berkeley) 6/6/93" */ -MAKE_RCSID("$NetBSD: make.c,v 1.219 2020/11/28 18:55:52 rillig Exp $"); +MAKE_RCSID("$NetBSD: make.c,v 1.220 2020/11/28 19:12:28 rillig Exp $"); /* Sequence # to detect recursion. */ static unsigned int checked_seqno = 1; @@ -329,7 +329,7 @@ GNode_IsOODate(GNode *gn) */ if (!oodate) { GNodeListNode *ln; - for (ln = gn->parents->first; ln != NULL; ln = ln->next) + for (ln = gn->parents.first; ln != NULL; ln = ln->next) GNode_UpdateYoungestChild(ln->datum, gn); } @@ -341,7 +341,7 @@ PretendAllChildrenAreMade(GNode *pgn) { GNodeListNode *ln; - for (ln = pgn->children->first; ln != NULL; ln = ln->next) { + for (ln = pgn->children.first; ln != NULL; ln = ln->next) { GNode *cgn = ln->datum; /* This may also update cgn->path. */ @@ -386,7 +386,7 @@ Make_HandleUse(GNode *cgn, GNode *pgn) } } - for (ln = cgn->children->first; ln != NULL; ln = ln->next) { + for (ln = cgn->children.first; ln != NULL; ln = ln->next) { GNode *gn = ln->datum; /* @@ -409,8 +409,8 @@ Make_HandleUse(GNode *cgn, GNode *pgn) gn = tgn; } - Lst_Append(pgn->children, gn); - Lst_Append(gn->parents, pgn); + Lst_Append(&pgn->children, gn); + Lst_Append(&gn->parents, pgn); pgn->unmade++; } @@ -449,7 +449,7 @@ MakeHandleUse(GNode *cgn, GNode *pgn, GN * children the parent has. This is used by Make_Run to decide * whether to queue the parent or examine its children... */ - Lst_Remove(pgn->children, ln); + Lst_Remove(&pgn->children, ln); pgn->unmade--; } @@ -457,7 +457,7 @@ static void HandleUseNodes(GNode *gn) { GNodeListNode *ln, *nln; - for (ln = gn->children->first; ln != NULL; ln = nln) { + for (ln = gn->children.first; ln != NULL; ln = nln) { nln = ln->next; MakeHandleUse(ln->datum, gn, ln); } @@ -642,7 +642,7 @@ Make_Update(GNode *cgn) * which is where all parents are linked. */ if ((centurion = cgn->centurion) != NULL) { - if (!Lst_IsEmpty(cgn->parents)) + if (!Lst_IsEmpty(&cgn->parents)) Punt("%s%s: cohort has parents", cgn->name, cgn->cohort_num); centurion->unmade_cohorts--; if (centurion->unmade_cohorts < 0) @@ -650,7 +650,7 @@ Make_Update(GNode *cgn) } else { centurion = cgn; } - parents = centurion->parents; + parents = ¢urion->parents; /* If this was a .ORDER node, schedule the RHS */ ScheduleOrderSuccessors(centurion); @@ -751,7 +751,7 @@ UnmarkChildren(GNode *gn) { GNodeListNode *ln; - for (ln = gn->children->first; ln != NULL; ln = ln->next) { + for (ln = gn->children.first; ln != NULL; ln = ln->next) { GNode *child = ln->datum; child->type &= ~OP_MARK; } @@ -846,7 +846,7 @@ Make_DoAllVar(GNode *gn) return; UnmarkChildren(gn); - for (ln = gn->children->first; ln != NULL; ln = ln->next) + for (ln = gn->children.first; ln != NULL; ln = ln->next) MakeAddAllSrc(ln->datum, gn); if (!Var_Exists(OODATE, gn)) @@ -964,7 +964,7 @@ MakeStartJobs(void) GNodeListNode *toBeMadeNext = toBeMade->first; GNodeListNode *ln; - for (ln = gn->children->first; ln != NULL; ln = ln->next) + for (ln = gn->children.first; ln != NULL; ln = ln->next) if (MakeBuildChild(ln->datum, toBeMadeNext) != 0) break; } @@ -1086,7 +1086,7 @@ MakePrintStatus(GNode *gn, int *errors) if (!(gn->flags & CYCLE)) { /* First time we've seen this node, check all children */ gn->flags |= CYCLE; - MakePrintStatusList(gn->children, errors); + MakePrintStatusList(&gn->children, errors); /* Mark that this node needn't be processed again */ gn->flags |= DONECYCLE; return FALSE; @@ -1100,7 +1100,7 @@ MakePrintStatus(GNode *gn, int *errors) return TRUE; /* Reporting for our children will give the rest of the loop */ - MakePrintStatusList(gn->children, errors); + MakePrintStatusList(&gn->children, errors); return FALSE; } @@ -1199,7 +1199,7 @@ Make_ExpandUse(GNodeList *targs) } if (gn->unmade != 0) - ExamineLater(examine, gn->children); + ExamineLater(examine, &gn->children); } Lst_Free(examine); @@ -1217,9 +1217,9 @@ add_wait_dependency(GNodeListNode *owln, cn->name, cn->cohort_num, wn->name); /* XXX: This pattern should be factored out, it repeats often */ - Lst_Append(wn->children, cn); + Lst_Append(&wn->children, cn); wn->unmade++; - Lst_Append(cn->parents, wn); + Lst_Append(&cn->parents, wn); } } @@ -1248,8 +1248,8 @@ Make_ProcessWait(GNodeList *targs) for (ln = targs->first; ln != NULL; ln = ln->next) { GNode *cgn = ln->datum; - Lst_Append(pgn->children, cgn); - Lst_Append(cgn->parents, pgn); + Lst_Append(&pgn->children, cgn); + Lst_Append(&cgn->parents, pgn); pgn->unmade++; } } @@ -1274,8 +1274,8 @@ Make_ProcessWait(GNodeList *targs) if (pgn->type & OP_DOUBLEDEP) Lst_PrependAll(examine, pgn->cohorts); - owln = pgn->children->first; - for (ln = pgn->children->first; ln != NULL; ln = ln->next) { + owln = pgn->children.first; + for (ln = pgn->children.first; ln != NULL; ln = ln->next) { GNode *cgn = ln->datum; if (cgn->type & OP_WAIT) { add_wait_dependency(owln, cgn); Index: src/usr.bin/make/make.h diff -u src/usr.bin/make/make.h:1.221 src/usr.bin/make/make.h:1.222 --- src/usr.bin/make/make.h:1.221 Sat Nov 28 18:55:52 2020 +++ src/usr.bin/make/make.h Sat Nov 28 19:12:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: make.h,v 1.221 2020/11/28 18:55:52 rillig Exp $ */ +/* $NetBSD: make.h,v 1.222 2020/11/28 19:12:28 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -387,9 +387,9 @@ typedef struct GNode { /* The nodes that depend on this one, or in other words, the nodes for * which this is a source. */ - GNodeList *parents; + GNodeList parents; /* The nodes on which this one depends. */ - GNodeList *children; + GNodeList children; /* .ORDER nodes we need made. The nodes that must be made (if they're * made) before this node can be made, but that do not enter into the Index: src/usr.bin/make/parse.c diff -u src/usr.bin/make/parse.c:1.454 src/usr.bin/make/parse.c:1.455 --- src/usr.bin/make/parse.c:1.454 Sat Nov 28 18:55:52 2020 +++ src/usr.bin/make/parse.c Sat Nov 28 19:12:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.454 2020/11/28 18:55:52 rillig Exp $ */ +/* $NetBSD: parse.c,v 1.455 2020/11/28 19:12:28 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -117,7 +117,7 @@ #include "pathnames.h" /* "@(#)parse.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: parse.c,v 1.454 2020/11/28 18:55:52 rillig Exp $"); +MAKE_RCSID("$NetBSD: parse.c,v 1.455 2020/11/28 19:12:28 rillig Exp $"); /* types and constants */ @@ -761,12 +761,12 @@ LinkSource(GNode *pgn, GNode *cgn, Boole if ((pgn->type & OP_DOUBLEDEP) && !Lst_IsEmpty(pgn->cohorts)) pgn = pgn->cohorts->last->datum; - Lst_Append(pgn->children, cgn); + Lst_Append(&pgn->children, cgn); pgn->unmade++; /* Special targets like .END don't need any children. */ if (!isSpecial) - Lst_Append(cgn->parents, pgn); + Lst_Append(&cgn->parents, pgn); if (DEBUG(PARSE)) { debug_printf("# %s: added child %s - %s\n", Index: src/usr.bin/make/suff.c diff -u src/usr.bin/make/suff.c:1.309 src/usr.bin/make/suff.c:1.310 --- src/usr.bin/make/suff.c:1.309 Sat Nov 28 18:55:52 2020 +++ src/usr.bin/make/suff.c Sat Nov 28 19:12:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: suff.c,v 1.309 2020/11/28 18:55:52 rillig Exp $ */ +/* $NetBSD: suff.c,v 1.310 2020/11/28 19:12:28 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -114,7 +114,7 @@ #include "dir.h" /* "@(#)suff.c 8.4 (Berkeley) 3/21/94" */ -MAKE_RCSID("$NetBSD: suff.c,v 1.309 2020/11/28 18:55:52 rillig Exp $"); +MAKE_RCSID("$NetBSD: suff.c,v 1.310 2020/11/28 19:12:28 rillig Exp $"); #define SUFF_DEBUG0(text) DEBUG0(SUFF, text) #define SUFF_DEBUG1(fmt, arg1) DEBUG1(SUFF, fmt, arg1) @@ -569,9 +569,9 @@ Suff_AddTransform(const char *name) * attached to several different transformations. */ Lst_Done(&gn->commands); - Lst_Free(gn->children); Lst_Init(&gn->commands); - gn->children = Lst_New(); + Lst_Done(&gn->children); + Lst_Init(&gn->children); } gn->type = OP_TRANSFORM; @@ -613,7 +613,7 @@ Suff_EndTransform(GNode *gn) if (!(gn->type & OP_TRANSFORM)) return; - if (!Lst_IsEmpty(&gn->commands) || !Lst_IsEmpty(gn->children)) { + if (!Lst_IsEmpty(&gn->commands) || !Lst_IsEmpty(&gn->children)) { SUFF_DEBUG1("transformation %s complete\n", gn->name); return; } @@ -744,8 +744,8 @@ UpdateTarget(GNode *target, GNode **inou *inout_main = NULL; Targ_SetMain(NULL); } - Lst_Free(target->children); - target->children = Lst_New(); + Lst_Done(&target->children); + Lst_Init(&target->children); target->type = OP_TRANSFORM; /* * link the two together in the proper relationship and order @@ -1125,7 +1125,7 @@ FindCmds(Candidate *targ, CandidateSearc tgn = targ->node; prefLen = strlen(targ->prefix); - for (gln = tgn->children->first; gln != NULL; gln = gln->next) { + for (gln = tgn->children.first; gln != NULL; gln = gln->next) { sgn = gln->datum; if (sgn->type & OP_OPTIONAL && Lst_IsEmpty(&tgn->commands)) { @@ -1204,8 +1204,8 @@ ExpandWildcards(GNodeListNode *cln, GNod gn = Targ_GetNode(cp); /* Add gn to the parents child list before the original child */ - Lst_InsertBefore(pgn->children, cln, gn); - Lst_Append(gn->parents, pgn); + Lst_InsertBefore(&pgn->children, cln, gn); + Lst_Append(&gn->parents, pgn); pgn->unmade++; } @@ -1218,8 +1218,8 @@ ExpandWildcards(GNodeListNode *cln, GNod * keep it from being processed. */ pgn->unmade--; - Lst_Remove(pgn->children, cln); - Lst_Remove(cgn->parents, Lst_FindDatum(cgn->parents, pgn)); + Lst_Remove(&pgn->children, cln); + Lst_Remove(&cgn->parents, Lst_FindDatum(&cgn->parents, pgn)); } /* Expand the names of any children of a given node that contain variable @@ -1352,8 +1352,8 @@ ExpandChildren(GNodeListNode *cln, GNode SUFF_DEBUG1("%s...", gn->name); /* Add gn to the parents child list before the original child */ - Lst_InsertBefore(pgn->children, cln, gn); - Lst_Append(gn->parents, pgn); + Lst_InsertBefore(&pgn->children, cln, gn); + Lst_Append(&gn->parents, pgn); pgn->unmade++; /* Expand wildcards on new node */ ExpandWildcards(cln->prev, pgn); @@ -1373,8 +1373,8 @@ ExpandChildren(GNodeListNode *cln, GNode * keep it from being processed. */ pgn->unmade--; - Lst_Remove(pgn->children, cln); - Lst_Remove(cgn->parents, Lst_FindDatum(cgn->parents, pgn)); + Lst_Remove(&pgn->children, cln); + Lst_Remove(&cgn->parents, Lst_FindDatum(&cgn->parents, pgn)); } static void @@ -1382,7 +1382,7 @@ ExpandAllChildren(GNode *gn) { GNodeListNode *ln, *nln; - for (ln = gn->children->first; ln != NULL; ln = nln) { + for (ln = gn->children.first; ln != NULL; ln = nln) { nln = ln->next; ExpandChildren(ln, gn); } @@ -1447,8 +1447,8 @@ ApplyTransform(GNode *tgn, GNode *sgn, S /* * Form the proper links between the target and source. */ - Lst_Append(tgn->children, sgn); - Lst_Append(sgn->parents, tgn); + Lst_Append(&tgn->children, sgn); + Lst_Append(&sgn->parents, tgn); tgn->unmade++; /* @@ -1467,7 +1467,7 @@ ApplyTransform(GNode *tgn, GNode *sgn, S ssuff->name, tsuff->name, tgn->name); /* Record last child; Make_HandleUse may add child nodes. */ - ln = tgn->children->last; + ln = tgn->children.last; /* Apply the rule. */ Make_HandleUse(gn, tgn); @@ -1568,8 +1568,8 @@ FindDepsArchive(GNode *gn, CandidateSear /* * Create the link between the two nodes right off */ - Lst_Append(gn->children, mem); - Lst_Append(mem->parents, gn); + Lst_Append(&gn->children, mem); + Lst_Append(&mem->parents, gn); gn->unmade++; /* @@ -1864,7 +1864,7 @@ FindDepsRegular(GNode *gn, CandidateSear */ { GNodeListNode *ln, *nln; - for (ln = gn->children->first; ln != NULL; ln = nln) { + for (ln = gn->children.first; ln != NULL; ln = nln) { nln = ln->next; ExpandChildren(ln, gn); } @@ -1888,7 +1888,7 @@ sfnd_abort: /* * Check for overriding transformation rule implied by sources */ - if (!Lst_IsEmpty(gn->children)) { + if (!Lst_IsEmpty(&gn->children)) { src = FindCmds(targ, cs); if (src != NULL) { Index: src/usr.bin/make/targ.c diff -u src/usr.bin/make/targ.c:1.142 src/usr.bin/make/targ.c:1.143 --- src/usr.bin/make/targ.c:1.142 Sat Nov 28 18:55:52 2020 +++ src/usr.bin/make/targ.c Sat Nov 28 19:12:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: targ.c,v 1.142 2020/11/28 18:55:52 rillig Exp $ */ +/* $NetBSD: targ.c,v 1.143 2020/11/28 19:12:28 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -119,7 +119,7 @@ #include "dir.h" /* "@(#)targ.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: targ.c,v 1.142 2020/11/28 18:55:52 rillig Exp $"); +MAKE_RCSID("$NetBSD: targ.c,v 1.143 2020/11/28 19:12:28 rillig Exp $"); /* * All target nodes that appeared on the left-hand side of one of the @@ -202,8 +202,8 @@ GNode_New(const char *name) gn->mtime = 0; gn->youngestChild = NULL; gn->implicitParents = Lst_New(); - gn->parents = Lst_New(); - gn->children = Lst_New(); + Lst_Init(&gn->parents); + Lst_Init(&gn->children); gn->order_pred = Lst_New(); gn->order_succ = Lst_New(); gn->cohorts = Lst_New(); @@ -235,8 +235,8 @@ GNode_Free(void *gnp) free(gn->path); /* gn->youngestChild is not owned by this node. */ Lst_Free(gn->implicitParents); /* Do not free the nodes themselves, */ - Lst_Free(gn->parents); /* as they are not owned by this node. */ - Lst_Free(gn->children); /* likewise */ + Lst_Done(&gn->parents); /* as they are not owned by this node. */ + Lst_Done(&gn->children); /* likewise */ Lst_Free(gn->order_pred); /* likewise */ Lst_Free(gn->order_succ); /* likewise */ Lst_Free(gn->cohorts); /* likewise */ @@ -508,13 +508,13 @@ Targ_PrintNode(GNode *gn, int pass) if (gn->unmade) debug_printf("# %d unmade children\n", gn->unmade); } - PrintNodeNamesLine("parents", gn->parents); + PrintNodeNamesLine("parents", &gn->parents); PrintNodeNamesLine("order_pred", gn->order_pred); PrintNodeNamesLine("order_succ", gn->order_succ); debug_printf("%-16s%s", gn->name, GNode_OpName(gn)); Targ_PrintType(gn->type); - PrintNodeNames(gn->children); + PrintNodeNames(&gn->children); debug_printf("\n"); Targ_PrintCmds(gn); debug_printf("\n\n");