Lines Matching refs:stack
185 struct type_state_stack *stack, *tmp; in exit_type_state() local
187 list_for_each_entry_safe(stack, tmp, &state->stack_vars, list) { in exit_type_state()
188 list_del(&stack->list); in exit_type_state()
189 free(stack); in exit_type_state()
566 struct type_state_stack *stack; in find_stack_state() local
568 list_for_each_entry(stack, &state->stack_vars, list) { in find_stack_state()
569 if (offset == stack->offset) in find_stack_state()
570 return stack; in find_stack_state()
572 if (stack->compound && stack->offset < offset && in find_stack_state()
573 offset < stack->offset + stack->size) in find_stack_state()
574 return stack; in find_stack_state()
579 void set_stack_state(struct type_state_stack *stack, int offset, u8 kind, in set_stack_state() argument
592 stack->type = *type_die; in set_stack_state()
593 stack->size = size; in set_stack_state()
594 stack->offset = offset; in set_stack_state()
595 stack->ptr_offset = ptr_offset; in set_stack_state()
596 stack->kind = kind; in set_stack_state()
599 stack->compound = false; in set_stack_state()
608 stack->compound = (kind != TSR_KIND_PERCPU_POINTER); in set_stack_state()
611 stack->compound = false; in set_stack_state()
621 struct type_state_stack *stack = find_stack_state(state, offset); in findnew_stack_state() local
623 if (stack) { in findnew_stack_state()
624 set_stack_state(stack, offset, kind, type_die, ptr_offset); in findnew_stack_state()
625 return stack; in findnew_stack_state()
628 stack = malloc(sizeof(*stack)); in findnew_stack_state()
629 if (stack) { in findnew_stack_state()
630 set_stack_state(stack, offset, kind, type_die, ptr_offset); in findnew_stack_state()
631 list_add(&stack->list, &state->stack_vars); in findnew_stack_state()
633 return stack; in findnew_stack_state()
884 struct type_state_stack *stack; in update_var_state() local
894 stack = find_stack_state(state, offset); in update_var_state()
895 if (stack && stack->kind == TSR_KIND_TYPE && in update_var_state()
896 !is_better_type(&stack->type, &mem_die)) in update_var_state()
1235 struct type_state_stack *stack; in check_matching_type() local
1239 stack = find_stack_state(state, dloc->type_offset); in check_matching_type()
1240 if (stack == NULL) { in check_matching_type()
1252 if (stack->kind == TSR_KIND_CANARY) { in check_matching_type()
1257 if (stack->kind != TSR_KIND_TYPE) in check_matching_type()
1260 *type_die = stack->type; in check_matching_type()
1262 dloc->type_offset -= stack->offset; in check_matching_type()
1268 struct type_state_stack *stack; in check_matching_type() local
1280 stack = find_stack_state(state, dloc->type_offset - fboff); in check_matching_type()
1281 if (stack == NULL) { in check_matching_type()
1293 if (stack->kind == TSR_KIND_CANARY) { in check_matching_type()
1298 if (stack->kind != TSR_KIND_TYPE) in check_matching_type()
1301 *type_die = stack->type; in check_matching_type()
1303 dloc->type_offset -= fboff + stack->offset; in check_matching_type()