Home | History | Annotate | Download | only in gcc

Lines Matching defs:tci

1209 extr_type_from_vtbl_ptr_store (gimple *stmt, struct type_change_info *tci,
1229 if (tci->vtbl_ptr_ref && operand_equal_p (lhs, tci->vtbl_ptr_ref, 0))
1234 if (DECL_P (tci->instance))
1236 if (base != tci->instance)
1243 print_generic_expr (dump_file, tci->instance, TDF_SLIM);
1251 if (!operand_equal_p (tci->instance, TREE_OPERAND (base, 0), 0))
1258 print_generic_expr (dump_file, tci->instance, TDF_SLIM);
1272 print_generic_expr (dump_file, tci->instance, TDF_SLIM);
1281 else if (!operand_equal_p (tci->instance, base, 0)
1282 || tci->offset)
1289 print_generic_expr (dump_file, tci->instance, TDF_SLIM);
1290 fprintf (dump_file, " with offset %i\n", (int)tci->offset);
1292 return tci->offset > POINTER_SIZE ? error_mark_node : NULL_TREE;
1294 if (maybe_ne (offset, tci->offset)
1302 fprintf (dump_file, "!=%i or size ", (int) tci->offset);
1306 return (known_le (offset + POINTER_SIZE, tci->offset)
1308 && known_gt (tci->offset + POINTER_SIZE,
1338 /* Record dynamic type change of TCI to TYPE. */
1341 record_known_type (struct type_change_info *tci, tree type, HOST_WIDE_INT offset)
1374 if (!context.restrict_to_inner_class (tci->otr_type))
1388 if (tci->type_maybe_changed
1389 && (!types_same_for_odr (type, tci->known_current_type)
1390 || offset != tci->known_current_offset))
1391 tci->multiple_types_encountered = true;
1392 tci->known_current_type = TYPE_MAIN_VARIANT (type);
1393 tci->known_current_offset = offset;
1394 tci->type_maybe_changed = true;
1420 struct type_change_info *tci = (struct type_change_info *) data;
1424 if (tci->multiple_types_encountered)
1457 tci->speculative++;
1458 return csftc_abort_walking_p (tci->speculative);
1464 tci->speculative++;
1465 return csftc_abort_walking_p (tci->speculative);
1475 tci->speculative++;
1476 return csftc_abort_walking_p (tci->speculative);
1480 if (operand_equal_p (op, tci->instance, 0)
1484 && tree_to_shwi (TYPE_SIZE (type)) + offset > tci->offset
1498 && (tci->offset == offset || contains_polymorphic_type_p (type)))
1500 record_known_type (tci, type, tci->offset - offset);
1511 tci->speculative++;
1512 return csftc_abort_walking_p (tci->speculative);
1525 type = extr_type_from_vtbl_ptr_store (stmt, tci, &offset);
1533 tci->seen_unanalyzed_store = true;
1534 tci->speculative++;
1537 record_known_type (tci, type, offset);
1573 struct type_change_info tci;
1723 tci.offset = instance_offset;
1724 tci.instance = instance;
1725 tci.vtbl_ptr_ref = instance_ref;
1726 tci.known_current_type = NULL_TREE;
1727 tci.known_current_offset = 0;
1728 tci.otr_type = otr_type;
1729 tci.type_maybe_changed = false;
1730 tci.multiple_types_encountered = false;
1731 tci.speculative = 0;
1732 tci.seen_unanalyzed_store = false;
1740 &tci, NULL, &function_entry_reached, aa_walk_budget);
1784 we can safely ignore tci.speculative that is set on calls and give up
1798 if (!tci.type_maybe_changed
1801 && !tci.seen_unanalyzed_store
1802 && !tci.multiple_types_encountered
1803 && ((offset == tci.offset
1804 && types_same_for_odr (tci.known_current_type,
1807 && types_same_for_odr (tci.known_current_type,
1810 if (!outer_type || tci.seen_unanalyzed_store)
1819 if (tci.known_current_type
1821 && !tci.multiple_types_encountered)
1823 if (!tci.speculative)
1825 outer_type = TYPE_MAIN_VARIANT (tci.known_current_type);
1826 offset = tci.known_current_offset;
1836 speculative_outer_type = TYPE_MAIN_VARIANT (tci.known_current_type);
1837 speculative_offset = tci.known_current_offset;