Lines Matching defs:components

1034    can put parts of it in places where those components are executed less
1036 components that can be put in more than one location, and where those
1037 components can be executed more than once (the epilogue component will
1042 components are simple saves/restores to/from the frame of callee-saved
1043 registers. This code treats components abstractly (as an sbitmap),
1046 Prologue components are placed in such a way that for every component
1054 get a prologue inserted. That then is how the components are placed.
1055 We could place the epilogue components a bit smarter (we can save a
1065 where we want to put them), separate shrink-wrapping for the components
1072 dump_components (const char *label, sbitmap components)
1074 if (bitmap_empty_p (components))
1079 for (unsigned int j = 0; j < components->n_bits; j++)
1080 if (bitmap_bit_p (components, j))
1088 /* What components does this BB need? */
1091 /* What components does this BB have? This is the main decision this
1095 /* The components for which we placed code at the start of the BB (instead
1099 /* The components for which we placed code at the end of the BB (instead
1123 with components COMPONENTS. */
1125 init_separate_shrink_wrap (sbitmap components)
1134 /* Mark all basic blocks without successor as needing all components.
1139 bitmap_copy (SW (bb)->needs_components, components);
1143 fprintf (dump_file, "bb %d components:", bb->index);
1148 SW (bb)->has_components = sbitmap_alloc (SBITMAP_SIZE (components));
1149 SW (bb)->head_components = sbitmap_alloc (SBITMAP_SIZE (components));
1150 SW (bb)->tail_components = sbitmap_alloc (SBITMAP_SIZE (components));
1278 spread_components (sbitmap components)
1289 auto_sbitmap old (SBITMAP_SIZE (components));
1291 /* Find for every block the components that are *not* needed on some path
1294 components (plus one), and usually much less often. */
1303 bitmap_copy (SW (entry_block)->head_components, components);
1331 /* Find for every block the components that are *not* needed on some reverse
1342 bitmap_copy (SW (bb)->tail_components, components);
1364 /* And then, flood fill backwards to find for every block the components
1367 bitmap_copy (SW (exit_block)->tail_components, components);
1408 bitmap_and_compl (SW (bb)->has_components, components,
1419 fprintf (dump_file, "bb %d components:", bb->index);
1432 disqualify_problematic_components (sbitmap components)
1434 auto_sbitmap pro (SBITMAP_SIZE (components));
1435 auto_sbitmap epi (SBITMAP_SIZE (components));
1444 /* Find which components we want pro/epilogues for here. */
1452 targetm.shrink_wrap.disqualify_components (components, e, epi,
1455 targetm.shrink_wrap.disqualify_components (components, e, pro,
1474 /* Remove from consideration those components we would need
1476 bitmap_and_compl (components, components, epi);
1477 bitmap_and_compl (components, components, pro);
1479 if (dump_file && !bitmap_subset_p (epi, components))
1489 if (dump_file && !bitmap_subset_p (pro, components))
1505 emit_common_heads_for_components (sbitmap components)
1507 auto_sbitmap pro (SBITMAP_SIZE (components));
1508 auto_sbitmap epi (SBITMAP_SIZE (components));
1509 auto_sbitmap tmp (SBITMAP_SIZE (components));
1517 /* Find which prologue resp. epilogue components are needed for all
1520 /* First, select all possible components. */
1521 bitmap_copy (epi, components);
1522 bitmap_copy (pro, components);
1535 /* Deselect those epilogue components that should not be inserted
1590 emit_common_tails_for_components (sbitmap components)
1592 auto_sbitmap pro (SBITMAP_SIZE (components));
1593 auto_sbitmap epi (SBITMAP_SIZE (components));
1594 auto_sbitmap tmp (SBITMAP_SIZE (components));
1602 /* Find which prologue resp. epilogue components are needed for all
1607 /* First, select all possible components. */
1608 bitmap_copy (epi, components);
1609 bitmap_copy (pro, components);
1622 /* Deselect those epilogue components that should not be inserted
1696 insert_prologue_epilogue_for_components (sbitmap components)
1698 auto_sbitmap pro (SBITMAP_SIZE (components));
1699 auto_sbitmap epi (SBITMAP_SIZE (components));
1711 /* Find which pro/epilogue components are needed on this edge. */
1716 bitmap_and (epi, epi, components);
1717 bitmap_and (pro, pro, components);
1741 /* Put the epilogue components in place. */
1765 /* Put the prologue components in place. */
1800 /* Ask the target what components there are. If it returns NULL, don't
1802 sbitmap components = targetm.shrink_wrap.get_separate_components ();
1803 if (!components)
1819 init_separate_shrink_wrap (components);
1823 EXECUTE_IF_SET_IN_BITMAP (components, 0, j, sbi)
1829 while (spread_components (components))
1837 disqualify_problematic_components (components);
1841 all components together (say, if it generates store-multiple insns). */
1842 bitmap_and_compl (components, components, SW (first_bb)->has_components);
1844 if (bitmap_empty_p (components))
1853 fprintf (dump_file, "The components we wrap separately are");
1854 dump_components ("sep", components);
1860 emit_common_heads_for_components (components);
1865 emit_common_tails_for_components (components);
1870 insert_prologue_epilogue_for_components (components);
1875 targetm.shrink_wrap.set_handled_components (components);
1882 sbitmap_free (components);