Lines Matching refs:si

117 va_list_counter_bump (struct stdarg_info *si, tree counter, tree rhs,  in va_list_counter_bump()  argument
124 if (si->offsets == NULL) in va_list_counter_bump()
128 si->offsets = XNEWVEC (int, num_ssa_names); in va_list_counter_bump()
130 si->offsets[i] = -1; in va_list_counter_bump()
138 if (si->offsets[SSA_NAME_VERSION (lhs)] != -1) in va_list_counter_bump()
146 ret -= counter_val - si->offsets[SSA_NAME_VERSION (lhs)]; in va_list_counter_bump()
204 if (si->offsets[SSA_NAME_VERSION (lhs)] != -1) in va_list_counter_bump()
208 si->offsets[SSA_NAME_VERSION (lhs)] = max_size; in va_list_counter_bump()
210 si->offsets[SSA_NAME_VERSION (lhs)] = val; in va_list_counter_bump()
276 va_list_counter_op (struct stdarg_info *si, tree ap, tree var, bool gpr_p, in va_list_counter_op() argument
281 if (si->compute_sizes < 0) in va_list_counter_op()
283 si->compute_sizes = 0; in va_list_counter_op()
284 if (si->va_start_count == 1 in va_list_counter_op()
285 && reachable_at_most_once (si->bb, si->va_start_bb)) in va_list_counter_op()
286 si->compute_sizes = 1; in va_list_counter_op()
291 "in bb%d\n", si->bb->index, si->compute_sizes ? "" : "not ", in va_list_counter_op()
292 si->va_start_bb->index); in va_list_counter_op()
296 && si->compute_sizes in va_list_counter_op()
297 && (increment = va_list_counter_bump (si, ap, var, gpr_p)) + 1 > 1) in va_list_counter_op()
312 if (write_p || !si->compute_sizes) in va_list_counter_op()
330 va_list_counter_struct_op (struct stdarg_info *si, tree ap, tree var, in va_list_counter_struct_op() argument
340 || bitmap_bit_p (si->va_list_vars, DECL_UID (SSA_NAME_VAR (var)))) in va_list_counter_struct_op()
345 || !bitmap_bit_p (si->va_list_vars, DECL_UID (base))) in va_list_counter_struct_op()
349 va_list_counter_op (si, ap, var, true, write_p); in va_list_counter_struct_op()
351 va_list_counter_op (si, ap, var, false, write_p); in va_list_counter_struct_op()
361 va_list_ptr_read (struct stdarg_info *si, tree ap, tree tem) in va_list_ptr_read() argument
364 || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap))) in va_list_ptr_read()
368 || bitmap_bit_p (si->va_list_vars, in va_list_ptr_read()
373 if (si->compute_sizes < 0) in va_list_ptr_read()
375 si->compute_sizes = 0; in va_list_ptr_read()
376 if (si->va_start_count == 1 in va_list_ptr_read()
377 && reachable_at_most_once (si->bb, si->va_start_bb)) in va_list_ptr_read()
378 si->compute_sizes = 1; in va_list_ptr_read()
383 "in bb%d\n", si->bb->index, si->compute_sizes ? "" : "not ", in va_list_ptr_read()
384 si->va_start_bb->index); in va_list_ptr_read()
390 if (! si->compute_sizes) in va_list_ptr_read()
393 if (va_list_counter_bump (si, ap, tem, true) == (unsigned HOST_WIDE_INT) -1) in va_list_ptr_read()
398 bitmap_set_bit (si->va_list_escape_vars, in va_list_ptr_read()
411 va_list_ptr_write (struct stdarg_info *si, tree ap, tree tem2) in va_list_ptr_write() argument
416 || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap))) in va_list_ptr_write()
420 || bitmap_bit_p (si->va_list_vars, DECL_UID (SSA_NAME_VAR (tem2)))) in va_list_ptr_write()
423 if (si->compute_sizes <= 0) in va_list_ptr_write()
426 increment = va_list_counter_bump (si, ap, tem2, true); in va_list_ptr_write()
445 check_va_list_escapes (struct stdarg_info *si, tree lhs, tree rhs) in check_va_list_escapes() argument
457 || ! bitmap_bit_p (si->va_list_escape_vars, in check_va_list_escapes()
463 si->va_list_escapes = true; in check_va_list_escapes()
467 if (si->compute_sizes < 0) in check_va_list_escapes()
469 si->compute_sizes = 0; in check_va_list_escapes()
470 if (si->va_start_count == 1 in check_va_list_escapes()
471 && reachable_at_most_once (si->bb, si->va_start_bb)) in check_va_list_escapes()
472 si->compute_sizes = 1; in check_va_list_escapes()
477 "in bb%d\n", si->bb->index, si->compute_sizes ? "" : "not ", in check_va_list_escapes()
478 si->va_start_bb->index); in check_va_list_escapes()
484 if (! si->compute_sizes) in check_va_list_escapes()
486 si->va_list_escapes = true; in check_va_list_escapes()
490 if (va_list_counter_bump (si, si->va_start_ap, lhs, true) in check_va_list_escapes()
493 si->va_list_escapes = true; in check_va_list_escapes()
497 bitmap_set_bit (si->va_list_escape_vars, in check_va_list_escapes()
506 check_all_va_list_escapes (struct stdarg_info *si) in check_all_va_list_escapes() argument
521 if (! bitmap_bit_p (si->va_list_escape_vars, in check_all_va_list_escapes()
538 && si->offsets[SSA_NAME_VERSION (use)] != -1) in check_all_va_list_escapes()
543 gpr_size = si->offsets[SSA_NAME_VERSION (use)] in check_all_va_list_escapes()
567 && bitmap_bit_p (si->va_list_escape_vars, in check_all_va_list_escapes()
572 && bitmap_bit_p (si->va_list_vars, in check_all_va_list_escapes()
612 struct stdarg_info si; in execute_optimize_stdarg() local
617 memset (&si, 0, sizeof (si)); in execute_optimize_stdarg()
618 si.va_list_vars = BITMAP_ALLOC (NULL); in execute_optimize_stdarg()
619 si.va_list_escape_vars = BITMAP_ALLOC (NULL); in execute_optimize_stdarg()
662 si.va_start_count++; in execute_optimize_stdarg()
694 bitmap_set_bit (si.va_list_vars, DECL_UID (ap)); in execute_optimize_stdarg()
698 si.va_start_bb = bb; in execute_optimize_stdarg()
699 si.va_start_ap = ap; in execute_optimize_stdarg()
708 if (si.va_start_count == 0) in execute_optimize_stdarg()
717 if (va_list_simple_ptr && si.va_start_count > 1) in execute_optimize_stdarg()
744 si.compute_sizes = -1; in execute_optimize_stdarg()
745 si.bb = bb; in execute_optimize_stdarg()
767 if (va_list_ptr_read (&si, rhs, lhs)) in execute_optimize_stdarg()
769 else if (va_list_ptr_write (&si, lhs, rhs)) in execute_optimize_stdarg()
772 check_va_list_escapes (&si, lhs, rhs); in execute_optimize_stdarg()
774 if (si.va_list_escapes in execute_optimize_stdarg()
776 si.va_list_vars, NULL)) in execute_optimize_stdarg()
821 if (va_list_ptr_read (&si, rhs, lhs)) in execute_optimize_stdarg()
829 else if (va_list_ptr_write (&si, lhs, rhs)) in execute_optimize_stdarg()
833 check_va_list_escapes (&si, lhs, rhs); in execute_optimize_stdarg()
838 if (va_list_counter_struct_op (&si, lhs, rhs, true)) in execute_optimize_stdarg()
842 else if (va_list_counter_struct_op (&si, rhs, lhs, false)) in execute_optimize_stdarg()
847 && targetm.stdarg_optimize_hook (&si, lhs, rhs)) in execute_optimize_stdarg()
858 if (si.va_list_escapes in execute_optimize_stdarg()
860 si.va_list_vars, NULL)) in execute_optimize_stdarg()
878 && ! bitmap_empty_p (si.va_list_escape_vars) in execute_optimize_stdarg()
879 && check_all_va_list_escapes (&si)) in execute_optimize_stdarg()
888 BITMAP_FREE (si.va_list_vars); in execute_optimize_stdarg()
889 BITMAP_FREE (si.va_list_escape_vars); in execute_optimize_stdarg()
890 free (si.offsets); in execute_optimize_stdarg()