Lines Matching refs:stack
961 * When we check for recursive dependencies we use a stack to save
963 * The entries are located on the call stack so no need to free memory.
964 * Note insert() remove() must always match to properly clear the stack.
973 static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)
975 memset(stack, 0, sizeof(*stack));
977 check_top->next = stack;
978 stack->prev = check_top;
979 stack->sym = sym;
980 check_top = stack;
993 * the ->prev pointer to locate the bottom of the stack.
997 struct dep_stack *stack;
1008 for (stack = check_top; stack != NULL; stack = stack->prev)
1009 if (stack->sym == last_sym)
1011 if (!stack) {
1016 for (; stack; stack = stack->next) {
1017 sym = stack->sym;
1018 next_sym = stack->next ? stack->next->sym : last_sym;
1019 prop = stack->prop;
1021 prop = stack->sym->prop;
1031 if (stack->sym == last_sym)
1045 } else if (stack->expr == &sym->dir_dep.expr) {
1050 } else if (stack->expr == &sym->rev_dep.expr) {
1055 } else if (stack->expr == &sym->implied.expr) {
1060 } else if (stack->expr) {
1123 struct dep_stack stack;
1125 dep_stack_insert(&stack, sym);
1127 stack.expr = &sym->dir_dep.expr;
1132 stack.expr = &sym->rev_dep.expr;
1137 stack.expr = &sym->implied.expr;
1142 stack.expr = NULL;
1148 stack.prop = prop;
1154 stack.expr = &prop->expr;
1158 stack.expr = NULL;
1172 struct dep_stack stack;
1174 dep_stack_insert(&stack, choice);
1217 struct dep_stack stack;
1220 dep_stack_insert(&stack, sym);