Lines Matching refs:stack
1005 * When we check for recursive dependencies we use a stack to save
1007 * The entries are located on the call stack so no need to free memory.
1008 * Note insert() remove() must always match to properly clear the stack.
1017 static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)
1019 memset(stack, 0, sizeof(*stack));
1021 check_top->next = stack;
1022 stack->prev = check_top;
1023 stack->sym = sym;
1024 check_top = stack;
1037 * the ->prev pointer to locate the bottom of the stack.
1041 struct dep_stack *stack;
1052 for (stack = check_top; stack != NULL; stack = stack->prev)
1053 if (stack->sym == last_sym)
1055 if (!stack) {
1060 for (; stack; stack = stack->next) {
1061 sym = stack->sym;
1062 next_sym = stack->next ? stack->next->sym : last_sym;
1063 prop = stack->prop;
1065 prop = stack->sym->prop;
1075 if (stack->sym == last_sym)
1089 } else if (stack->expr == &sym->dir_dep.expr) {
1094 } else if (stack->expr == &sym->rev_dep.expr) {
1099 } else if (stack->expr == &sym->implied.expr) {
1104 } else if (stack->expr) {
1167 struct dep_stack stack;
1169 dep_stack_insert(&stack, sym);
1171 stack.expr = &sym->dir_dep.expr;
1176 stack.expr = &sym->rev_dep.expr;
1181 stack.expr = &sym->implied.expr;
1186 stack.expr = NULL;
1192 stack.prop = prop;
1198 stack.expr = &prop->expr;
1202 stack.expr = NULL;
1216 struct dep_stack stack;
1218 dep_stack_insert(&stack, choice);
1261 struct dep_stack stack;
1264 dep_stack_insert(&stack, sym);