示例#1
0
文件: cgraphbuild.c 项目: ArtemL/GCC
void
cgraph_rebuild_references (void)
{
  basic_block bb;
  struct cgraph_node *node = cgraph_get_node (current_function_decl);
  gimple_stmt_iterator gsi;
  struct ipa_ref *ref;
  int i;

  /* Keep speculative references for further cgraph edge expansion.  */
  for (i = 0; ipa_ref_list_reference_iterate (&node->ref_list, i, ref);)
    if (!ref->speculative)
      ipa_remove_reference (ref);
    else
      i++;

  node->count = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count;

  FOR_EACH_BB_FN (bb, cfun)
    {
      for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
	ipa_record_stmt_references (node, gsi_stmt (gsi));
      for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
	ipa_record_stmt_references (node, gsi_stmt (gsi));
    }
  record_eh_tables (node, cfun);
}
示例#2
0
文件: ipa-ref.c 项目: Dasoccerguy/gcc
void
ipa_remove_all_referring (struct ipa_ref_list *list)
{
  while (list->referring.length ())
    ipa_remove_reference (list->referring.last ());
  list->referring.release ();
}
示例#3
0
文件: ipa-ref.c 项目: Dasoccerguy/gcc
void
ipa_remove_all_references (struct ipa_ref_list *list)
{
  while (vec_safe_length (list->references))
    ipa_remove_reference (&list->references->last ());
  vec_free (list->references);
}
示例#4
0
文件: ipa-ref.c 项目: Nodplus/gcc
void
ipa_remove_stmt_references (symtab_node *referring_node, gimple stmt)
{
  struct ipa_ref *r = NULL;
  int i;

  for (i = 0; ipa_ref_list_reference_iterate (&referring_node->ref_list, i, r); i++)
    if (r->stmt == stmt)
      ipa_remove_reference (r);
}
示例#5
0
文件: ipa-ref.c 项目: gvz/avr-gcc
void
ipa_remove_stmt_references (symtab_node *referring_node, gimple stmt)
{
  struct ipa_ref *r = NULL;
  int i = 0;

  while (ipa_ref_list_reference_iterate (&referring_node->ref_list, i, r))
    if (r->stmt == stmt)
      ipa_remove_reference (r);
    else
      i++;
}