Lines Matching full:stack
1080 * When we check for recursive dependencies we use a stack to save
1082 * The entries are located on the call stack so no need to free memory.
1083 * Note insert() remove() must always match to properly clear the stack.
1092 static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) in dep_stack_insert() argument
1094 memset(stack, 0, sizeof(*stack)); in dep_stack_insert()
1096 check_top->next = stack; in dep_stack_insert()
1097 stack->prev = check_top; in dep_stack_insert()
1098 stack->sym = sym; in dep_stack_insert()
1099 check_top = stack; in dep_stack_insert()
1112 * the ->prev pointer to locate the bottom of the stack.
1116 struct dep_stack *stack; in sym_check_print_recursive() local
1127 for (stack = check_top; stack != NULL; stack = stack->prev) in sym_check_print_recursive()
1128 if (stack->sym == last_sym) in sym_check_print_recursive()
1130 if (!stack) { in sym_check_print_recursive()
1135 for (; stack; stack = stack->next) { in sym_check_print_recursive()
1136 sym = stack->sym; in sym_check_print_recursive()
1137 next_sym = stack->next ? stack->next->sym : last_sym; in sym_check_print_recursive()
1138 prop = stack->prop; in sym_check_print_recursive()
1140 prop = stack->sym->prop; in sym_check_print_recursive()
1150 if (stack->sym == last_sym) in sym_check_print_recursive()
1155 if (stack->expr) { in sym_check_print_recursive()
1161 } else if (stack->prop) { in sym_check_print_recursive()
1227 struct dep_stack stack; in sym_check_sym_deps() local
1229 dep_stack_insert(&stack, sym); in sym_check_sym_deps()
1238 stack.prop = prop; in sym_check_sym_deps()
1244 stack.expr = prop->expr; in sym_check_sym_deps()
1248 stack.expr = NULL; in sym_check_sym_deps()
1262 struct dep_stack stack; in sym_check_choice_deps() local
1264 dep_stack_insert(&stack, choice); in sym_check_choice_deps()
1307 struct dep_stack stack; in sym_check_deps() local
1310 dep_stack_insert(&stack, sym); in sym_check_deps()