Lines Matching refs:stack
1094 * When we check for recursive dependencies we use a stack to save
1096 * The entries are located on the call stack so no need to free memory.
1097 * Note insert() remove() must always match to properly clear the stack.
1106 static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)
1108 memset(stack, 0, sizeof(*stack));
1110 check_top->next = stack;
1111 stack->prev = check_top;
1112 stack->sym = sym;
1113 check_top = stack;
1126 * the ->prev pointer to locate the bottom of the stack.
1130 struct dep_stack *stack;
1141 for (stack = check_top; stack != NULL; stack = stack->prev)
1142 if (stack->sym == last_sym)
1144 if (!stack) {
1149 for (; stack; stack = stack->next) {
1150 sym = stack->sym;
1151 next_sym = stack->next ? stack->next->sym : last_sym;
1152 prop = stack->prop;
1154 prop = stack->sym->prop;
1164 if (stack->sym == last_sym)
1168 if (stack->expr) {
1174 } else if (stack->prop) {
1245 struct dep_stack stack;
1247 dep_stack_insert(&stack, sym);
1256 stack.prop = prop;
1262 stack.expr = prop->expr;
1266 stack.expr = NULL;
1280 struct dep_stack stack;
1282 dep_stack_insert(&stack, choice);
1325 struct dep_stack stack;
1328 dep_stack_insert(&stack, sym);