Lines Matching refs:stack
181 struct type_state_stack *stack, *tmp; in exit_type_state() local
183 list_for_each_entry_safe(stack, tmp, &state->stack_vars, list) { in exit_type_state()
184 list_del(&stack->list); in exit_type_state()
185 free(stack); in exit_type_state()
528 struct type_state_stack *stack; in find_stack_state() local
530 list_for_each_entry(stack, &state->stack_vars, list) { in find_stack_state()
531 if (offset == stack->offset) in find_stack_state()
532 return stack; in find_stack_state()
534 if (stack->compound && stack->offset < offset && in find_stack_state()
535 offset < stack->offset + stack->size) in find_stack_state()
536 return stack; in find_stack_state()
541 void set_stack_state(struct type_state_stack *stack, int offset, u8 kind, in set_stack_state() argument
552 stack->type = *type_die; in set_stack_state()
553 stack->size = size; in set_stack_state()
554 stack->offset = offset; in set_stack_state()
555 stack->kind = kind; in set_stack_state()
560 stack->compound = (kind != TSR_KIND_POINTER); in set_stack_state()
563 stack->compound = false; in set_stack_state()
572 struct type_state_stack *stack = find_stack_state(state, offset); in findnew_stack_state() local
574 if (stack) { in findnew_stack_state()
575 set_stack_state(stack, offset, kind, type_die); in findnew_stack_state()
576 return stack; in findnew_stack_state()
579 stack = malloc(sizeof(*stack)); in findnew_stack_state()
580 if (stack) { in findnew_stack_state()
581 set_stack_state(stack, offset, kind, type_die); in findnew_stack_state()
582 list_add(&stack->list, &state->stack_vars); in findnew_stack_state()
584 return stack; in findnew_stack_state()
835 struct type_state_stack *stack; in update_var_state() local
840 stack = find_stack_state(state, offset); in update_var_state()
841 if (stack && stack->kind == TSR_KIND_TYPE && in update_var_state()
842 !is_better_type(&stack->type, &mem_die)) in update_var_state()
1131 struct type_state_stack *stack; in check_matching_type() local
1135 stack = find_stack_state(state, dloc->type_offset); in check_matching_type()
1136 if (stack == NULL) { in check_matching_type()
1148 if (stack->kind == TSR_KIND_CANARY) { in check_matching_type()
1153 if (stack->kind != TSR_KIND_TYPE) in check_matching_type()
1156 *type_die = stack->type; in check_matching_type()
1158 dloc->type_offset -= stack->offset; in check_matching_type()
1164 struct type_state_stack *stack; in check_matching_type() local
1176 stack = find_stack_state(state, dloc->type_offset - fboff); in check_matching_type()
1177 if (stack == NULL) { in check_matching_type()
1189 if (stack->kind == TSR_KIND_CANARY) { in check_matching_type()
1194 if (stack->kind != TSR_KIND_TYPE) in check_matching_type()
1197 *type_die = stack->type; in check_matching_type()
1199 dloc->type_offset -= fboff + stack->offset; in check_matching_type()