OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-dev/] [fsf-gcc-snapshot-1-mar-12/] [or1k-gcc/] [gcc/] [ipa-ref-inline.h] - Diff between revs 684 and 783

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 684 Rev 783
/* IPA reference lists.
/* IPA reference lists.
   Copyright (C) 2010
   Copyright (C) 2010
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
   Contributed by Jan Hubicka
   Contributed by Jan Hubicka
 
 
This file is part of GCC.
This file is part of GCC.
 
 
GCC is free software; you can redistribute it and/or modify it under
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
Software Foundation; either version 3, or (at your option) any later
version.
version.
 
 
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.
for more details.
 
 
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */
<http://www.gnu.org/licenses/>.  */
 
 
/* Return callgraph node REF is refering.  */
/* Return callgraph node REF is refering.  */
static inline struct cgraph_node *
static inline struct cgraph_node *
ipa_ref_node (struct ipa_ref *ref)
ipa_ref_node (struct ipa_ref *ref)
{
{
  gcc_assert (ref->refered_type == IPA_REF_CGRAPH);
  gcc_assert (ref->refered_type == IPA_REF_CGRAPH);
  return ref->refered.cgraph_node;
  return ref->refered.cgraph_node;
}
}
 
 
/* Return varpool node REF is refering.  */
/* Return varpool node REF is refering.  */
 
 
static inline struct varpool_node *
static inline struct varpool_node *
ipa_ref_varpool_node (struct ipa_ref *ref)
ipa_ref_varpool_node (struct ipa_ref *ref)
{
{
  gcc_assert (ref->refered_type == IPA_REF_VARPOOL);
  gcc_assert (ref->refered_type == IPA_REF_VARPOOL);
  return ref->refered.varpool_node;
  return ref->refered.varpool_node;
}
}
 
 
/* Return cgraph node REF is in.  */
/* Return cgraph node REF is in.  */
 
 
static inline struct cgraph_node *
static inline struct cgraph_node *
ipa_ref_refering_node (struct ipa_ref *ref)
ipa_ref_refering_node (struct ipa_ref *ref)
{
{
  gcc_assert (ref->refering_type == IPA_REF_CGRAPH);
  gcc_assert (ref->refering_type == IPA_REF_CGRAPH);
  return ref->refering.cgraph_node;
  return ref->refering.cgraph_node;
}
}
 
 
/* Return varpool node REF is in.  */
/* Return varpool node REF is in.  */
 
 
static inline struct varpool_node *
static inline struct varpool_node *
ipa_ref_refering_varpool_node (struct ipa_ref *ref)
ipa_ref_refering_varpool_node (struct ipa_ref *ref)
{
{
  gcc_assert (ref->refering_type == IPA_REF_VARPOOL);
  gcc_assert (ref->refering_type == IPA_REF_VARPOOL);
  return ref->refering.varpool_node;
  return ref->refering.varpool_node;
}
}
 
 
/* Return reference list REF is in.  */
/* Return reference list REF is in.  */
 
 
static inline struct ipa_ref_list *
static inline struct ipa_ref_list *
ipa_ref_refering_ref_list (struct ipa_ref *ref)
ipa_ref_refering_ref_list (struct ipa_ref *ref)
{
{
  if (ref->refering_type == IPA_REF_CGRAPH)
  if (ref->refering_type == IPA_REF_CGRAPH)
    return &ipa_ref_refering_node (ref)->ref_list;
    return &ipa_ref_refering_node (ref)->ref_list;
  else
  else
    return &ipa_ref_refering_varpool_node (ref)->ref_list;
    return &ipa_ref_refering_varpool_node (ref)->ref_list;
}
}
 
 
/* Return reference list REF is in.  */
/* Return reference list REF is in.  */
 
 
static inline struct ipa_ref_list *
static inline struct ipa_ref_list *
ipa_ref_refered_ref_list (struct ipa_ref *ref)
ipa_ref_refered_ref_list (struct ipa_ref *ref)
{
{
  if (ref->refered_type == IPA_REF_CGRAPH)
  if (ref->refered_type == IPA_REF_CGRAPH)
    return &ipa_ref_node (ref)->ref_list;
    return &ipa_ref_node (ref)->ref_list;
  else
  else
    return &ipa_ref_varpool_node (ref)->ref_list;
    return &ipa_ref_varpool_node (ref)->ref_list;
}
}
 
 
/* Return first reference in LIST or NULL if empty.  */
/* Return first reference in LIST or NULL if empty.  */
 
 
static inline struct ipa_ref *
static inline struct ipa_ref *
ipa_ref_list_first_reference (struct ipa_ref_list *list)
ipa_ref_list_first_reference (struct ipa_ref_list *list)
{
{
  if (!VEC_length (ipa_ref_t, list->references))
  if (!VEC_length (ipa_ref_t, list->references))
    return NULL;
    return NULL;
  return VEC_index (ipa_ref_t, list->references, 0);
  return VEC_index (ipa_ref_t, list->references, 0);
}
}
 
 
/* Return first refering ref in LIST or NULL if empty.  */
/* Return first refering ref in LIST or NULL if empty.  */
 
 
static inline struct ipa_ref *
static inline struct ipa_ref *
ipa_ref_list_first_refering (struct ipa_ref_list *list)
ipa_ref_list_first_refering (struct ipa_ref_list *list)
{
{
  if (!VEC_length (ipa_ref_ptr, list->refering))
  if (!VEC_length (ipa_ref_ptr, list->refering))
    return NULL;
    return NULL;
  return VEC_index (ipa_ref_ptr, list->refering, 0);
  return VEC_index (ipa_ref_ptr, list->refering, 0);
}
}
 
 
/* Clear reference list.  */
/* Clear reference list.  */
 
 
static inline void
static inline void
ipa_empty_ref_list (struct ipa_ref_list *list)
ipa_empty_ref_list (struct ipa_ref_list *list)
{
{
  list->refering = NULL;
  list->refering = NULL;
  list->references = NULL;
  list->references = NULL;
}
}
 
 
/* Clear reference list.  */
/* Clear reference list.  */
 
 
static inline unsigned int
static inline unsigned int
ipa_ref_list_nreferences (struct ipa_ref_list *list)
ipa_ref_list_nreferences (struct ipa_ref_list *list)
{
{
  return VEC_length (ipa_ref_t, list->references);
  return VEC_length (ipa_ref_t, list->references);
}
}
 
 
#define ipa_ref_list_reference_iterate(L,I,P) \
#define ipa_ref_list_reference_iterate(L,I,P) \
   VEC_iterate(ipa_ref_t, (L)->references, (I), (P))
   VEC_iterate(ipa_ref_t, (L)->references, (I), (P))
#define ipa_ref_list_refering_iterate(L,I,P) \
#define ipa_ref_list_refering_iterate(L,I,P) \
   VEC_iterate(ipa_ref_ptr, (L)->refering, (I), (P))
   VEC_iterate(ipa_ref_ptr, (L)->refering, (I), (P))
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.