This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

C++ PATCH to rename DECL_ABSTRACT_VIRTUAL_P



Where possible, we should use standard terminology in GCC.  The things
we were calling "abstract virtual" functions are really "pure virtual"
functions.  This patch corrects the macros, etc., that used the
non-standard terminology.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

1999-12-28  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (lang_type): Replace abstract_virtuals with pure_virtuals.
	(CLASSTYPE_ABSTRACT_VIRTUALS): Rename to ...
	(CLASSTYPE_PURE_VIRTUALS): ... this.
	(lang_decl_flags): Replace abstract_virtual with pure_virtual.
	(DECL_ABSTRACT_VIRTUAL_P): Rename to ...
	(DECL_PURE_VIRTUAL_P): ... this.
	(get_abstract_virtuals): Rename to ...
	(get_pure_virtuals): ... this.
	* call.c (build_new_method_call): Replace DECL_PURE_VIRTUAL_P with
	DECL_ABSTRACT_VIRTUAL_P.  Replace CLASSTYPE_ABSTRACT_VIRTUALS with
	CLASSTYPE_PURE_VIRTUALS.
	* class.c (build_vtable_entry): Likewise.
	(finish_struct_bits): Likewise.  Call get_pure_virtuals, not
	get_abstract_virtuals.
	(build_vtbl_initializer): Likewise.
	(override_one_vtable): Likewise.
	(check_methods): Likewise.
	* decl.c (duplicate_decls): Likewise.
	(redeclaration_error_message): Likewise.
	(lang_mark_tree): Likewise.
	* decl2.c (grok_function_init): Likewise.
	(import_export_vtable): Likewise.
	(import_expor_class): Likewise.
	* typeck2.c (abstract_virtuals_error): Likewise.
	* xref.c (GNU_xref_member): Likewise.
	* search.c (get_abstract_virtuals): Rename to get_pure_virtuals.

Index: call.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/call.c,v
retrieving revision 1.183
diff -c -p -r1.183 call.c
*** call.c	1999/12/21 00:19:00	1.183
--- call.c	1999/12/29 06:13:54
*************** build_new_method_call (instance, name, a
*** 4319,4329 ****
        return error_mark_node;
      }
  
!   if (DECL_ABSTRACT_VIRTUAL_P (cand->fn)
        && instance == current_class_ref
        && DECL_CONSTRUCTOR_P (current_function_decl)
        && ! (flags & LOOKUP_NONVIRTUAL)
!       && value_member (cand->fn, CLASSTYPE_ABSTRACT_VIRTUALS (basetype)))
      cp_error ("abstract virtual `%#D' called from constructor", cand->fn);
    if (TREE_CODE (TREE_TYPE (cand->fn)) == METHOD_TYPE
        && is_dummy_object (instance_ptr))
--- 4319,4329 ----
        return error_mark_node;
      }
  
!   if (DECL_PURE_VIRTUAL_P (cand->fn)
        && instance == current_class_ref
        && DECL_CONSTRUCTOR_P (current_function_decl)
        && ! (flags & LOOKUP_NONVIRTUAL)
!       && value_member (cand->fn, CLASSTYPE_PURE_VIRTUALS (basetype)))
      cp_error ("abstract virtual `%#D' called from constructor", cand->fn);
    if (TREE_CODE (TREE_TYPE (cand->fn)) == METHOD_TYPE
        && is_dummy_object (instance_ptr))
Index: class.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/class.c,v
retrieving revision 1.209
diff -c -p -r1.209 class.c
*** class.c	1999/12/21 02:11:10	1.209
--- class.c	1999/12/29 06:13:57
*************** build_vtable_entry (delta, pfn)
*** 389,395 ****
    if (flag_vtable_thunks)
      {
        HOST_WIDE_INT idelta = TREE_INT_CST_LOW (delta);
!       if (idelta && ! DECL_ABSTRACT_VIRTUAL_P (TREE_OPERAND (pfn, 0)))
  	{
  	  pfn = build1 (ADDR_EXPR, vtable_entry_type,
  			make_thunk (pfn, idelta));
--- 389,395 ----
    if (flag_vtable_thunks)
      {
        HOST_WIDE_INT idelta = TREE_INT_CST_LOW (delta);
!       if (idelta && ! DECL_PURE_VIRTUAL_P (TREE_OPERAND (pfn, 0)))
  	{
  	  pfn = build1 (ADDR_EXPR, vtable_entry_type,
  			make_thunk (pfn, idelta));
*************** finish_struct_bits (t, max_has_virtual)
*** 1786,1802 ****
      }
  
    if (n_baseclasses && max_has_virtual)
!     {
!       /* For a class w/o baseclasses, `finish_struct' has set
!          CLASS_TYPE_ABSTRACT_VIRTUALS correctly (by definition). Similarly
!          for a class who's base classes do not have vtables. When neither
!          of these is true, we might have removed abstract virtuals (by
!          providing a definition), added some (by declaring new ones), or
!          redeclared ones from a base class. We need to recalculate what's
!          really an abstract virtual at this point (by looking in the
!          vtables).  */
!       CLASSTYPE_ABSTRACT_VIRTUALS (t) = get_abstract_virtuals (t);
!     }
  
    if (n_baseclasses)
      {
--- 1786,1800 ----
      }
  
    if (n_baseclasses && max_has_virtual)
!     /* For a class w/o baseclasses, `finish_struct' has set
!        CLASS_TYPE_ABSTRACT_VIRTUALS correctly (by
!        definition). Similarly for a class whose base classes do not
!        have vtables. When neither of these is true, we might have
!        removed abstract virtuals (by providing a definition), added
!        some (by declaring new ones), or redeclared ones from a base
!        class. We need to recalculate what's really an abstract virtual
!        at this point (by looking in the vtables).  */
!       get_pure_virtuals (t);
  
    if (n_baseclasses)
      {
*************** build_vtbl_initializer (binfo)
*** 2251,2257 ****
  
        /* You can't call an abstract virtual function; it's abstract.
  	 So, we replace these functions with __pure_virtual.  */
!       if (DECL_ABSTRACT_VIRTUAL_P (fn))
  	fn = abort_fndecl;
  
        /* Package up that information for the vtable.  */
--- 2249,2255 ----
  
        /* You can't call an abstract virtual function; it's abstract.
  	 So, we replace these functions with __pure_virtual.  */
!       if (DECL_PURE_VIRTUAL_P (fn))
  	fn = abort_fndecl;
  
        /* Package up that information for the vtable.  */
*************** override_one_vtable (binfo, old, t)
*** 2806,2813 ****
  	    copy_lang_decl (fndecl);
  	    DECL_NEEDS_FINAL_OVERRIDER_P (fndecl) = 1;
  	    /* Make sure we search for it later.  */
! 	    if (! CLASSTYPE_ABSTRACT_VIRTUALS (t))
! 	      CLASSTYPE_ABSTRACT_VIRTUALS (t) = error_mark_node;
  
  	    /* We can use integer_zero_node, as we will core dump
  	       if this is used anyway.  */
--- 2804,2811 ----
  	    copy_lang_decl (fndecl);
  	    DECL_NEEDS_FINAL_OVERRIDER_P (fndecl) = 1;
  	    /* Make sure we search for it later.  */
! 	    if (! CLASSTYPE_PURE_VIRTUALS (t))
! 	      CLASSTYPE_PURE_VIRTUALS (t) = error_mark_node;
  
  	    /* We can use integer_zero_node, as we will core dump
  	       if this is used anyway.  */
*************** check_methods (t)
*** 3922,3928 ****
        DECL_FIELD_SIZE (x) = 0;
  
        check_for_override (x, t);
!       if (DECL_ABSTRACT_VIRTUAL_P (x) && ! DECL_VINDEX (x))
  	cp_error_at ("initializer specified for non-virtual method `%D'", x);
  
        /* The name of the field is the original field name
--- 3920,3926 ----
        DECL_FIELD_SIZE (x) = 0;
  
        check_for_override (x, t);
!       if (DECL_PURE_VIRTUAL_P (x) && ! DECL_VINDEX (x))
  	cp_error_at ("initializer specified for non-virtual method `%D'", x);
  
        /* The name of the field is the original field name
*************** check_methods (t)
*** 3930,3938 ****
        if (DECL_VINDEX (x))
  	{
  	  TYPE_POLYMORPHIC_P (t) = 1;
! 	  if (DECL_ABSTRACT_VIRTUAL_P (x))
! 	    CLASSTYPE_ABSTRACT_VIRTUALS (t)
! 	      = tree_cons (NULL_TREE, x, CLASSTYPE_ABSTRACT_VIRTUALS (t));
  	}
      }
  }
--- 3928,3936 ----
        if (DECL_VINDEX (x))
  	{
  	  TYPE_POLYMORPHIC_P (t) = 1;
! 	  if (DECL_PURE_VIRTUAL_P (x))
! 	    CLASSTYPE_PURE_VIRTUALS (t)
! 	      = tree_cons (NULL_TREE, x, CLASSTYPE_PURE_VIRTUALS (t));
  	}
      }
  }
Index: cp-tree.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/cp-tree.h,v
retrieving revision 1.368
diff -c -p -r1.368 cp-tree.h
*** cp-tree.h	1999/12/26 23:06:54	1.368
--- cp-tree.h	1999/12/29 06:14:00
*************** struct lang_type
*** 1240,1246 ****
  
    union tree_node *size;
  
!   union tree_node *abstract_virtuals;
    union tree_node *friend_classes;
  
    union tree_node *rtti;
--- 1240,1246 ----
  
    union tree_node *size;
  
!   union tree_node *pure_virtuals;
    union tree_node *friend_classes;
  
    union tree_node *rtti;
*************** struct lang_type
*** 1428,1434 ****
  /* A cons list of virtual functions which cannot be inherited by
     derived classes.  When deriving from this type, the derived
     class must provide its own definition for each of these functions.  */
! #define CLASSTYPE_ABSTRACT_VIRTUALS(NODE) (TYPE_LANG_SPECIFIC(NODE)->abstract_virtuals)
  
  /* Nonzero means that this aggr type has been `closed' by a semicolon.  */
  #define CLASSTYPE_GOT_SEMICOLON(NODE) (TYPE_LANG_SPECIFIC (NODE)->got_semicolon)
--- 1428,1434 ----
  /* A cons list of virtual functions which cannot be inherited by
     derived classes.  When deriving from this type, the derived
     class must provide its own definition for each of these functions.  */
! #define CLASSTYPE_PURE_VIRTUALS(NODE) (TYPE_LANG_SPECIFIC(NODE)->pure_virtuals)
  
  /* Nonzero means that this aggr type has been `closed' by a semicolon.  */
  #define CLASSTYPE_GOT_SEMICOLON(NODE) (TYPE_LANG_SPECIFIC (NODE)->got_semicolon)
*************** struct lang_decl_flags
*** 1612,1618 ****
    unsigned static_function : 1;
    unsigned const_memfunc : 1;
    unsigned volatile_memfunc : 1;
!   unsigned abstract_virtual : 1;
    unsigned constructor_for_vbase_attr : 1;
  
    unsigned mutable_flag : 1;
--- 1612,1618 ----
    unsigned static_function : 1;
    unsigned const_memfunc : 1;
    unsigned volatile_memfunc : 1;
!   unsigned pure_virtual : 1;
    unsigned constructor_for_vbase_attr : 1;
  
    unsigned mutable_flag : 1;
*************** struct lang_decl
*** 1780,1788 ****
     constructor.  */
  #define DECL_NONCONVERTING_P(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.nonconverting)
  
! /* Nonzero for FUNCTION_DECL means that this member function
!    exists as part of an abstract class's interface.  */
! #define DECL_ABSTRACT_VIRTUAL_P(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.abstract_virtual)
  
  /* Nonzero for FUNCTION_DECL means that this member function
     must be overridden by derived classes.  */
--- 1780,1788 ----
     constructor.  */
  #define DECL_NONCONVERTING_P(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.nonconverting)
  
! /* Nonzero for FUNCTION_DECL means that this member function is a pure
!    virtual function.  */
! #define DECL_PURE_VIRTUAL_P(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.pure_virtual)
  
  /* Nonzero for FUNCTION_DECL means that this member function
     must be overridden by derived classes.  */
*************** extern tree lookup_fnfields			PROTO((tre
*** 3868,3874 ****
  extern tree lookup_member			PROTO((tree, tree, int, int));
  extern tree lookup_nested_tag			PROTO((tree, tree));
  extern tree get_matching_virtual		PROTO((tree, tree, int));
! extern tree get_abstract_virtuals		PROTO((tree));
  extern tree init_vbase_pointers			PROTO((tree, tree));
  extern void expand_indirect_vtbls_init		PROTO((tree, tree, tree));
  extern void clear_search_slots			PROTO((tree));
--- 3868,3874 ----
  extern tree lookup_member			PROTO((tree, tree, int, int));
  extern tree lookup_nested_tag			PROTO((tree, tree));
  extern tree get_matching_virtual		PROTO((tree, tree, int));
! extern void get_pure_virtuals		        PROTO((tree));
  extern tree init_vbase_pointers			PROTO((tree, tree));
  extern void expand_indirect_vtbls_init		PROTO((tree, tree, tree));
  extern void clear_search_slots			PROTO((tree));
Index: decl.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/decl.c,v
retrieving revision 1.525
diff -c -p -r1.525 decl.c
*** decl.c	1999/12/26 15:28:18	1.525
--- decl.c	1999/12/29 06:14:09
*************** duplicate_decls (newdecl, olddecl)
*** 3247,3253 ****
  	DECL_PENDING_INLINE_INFO (newdecl) = DECL_PENDING_INLINE_INFO (olddecl);
        DECL_STATIC_CONSTRUCTOR (newdecl) |= DECL_STATIC_CONSTRUCTOR (olddecl);
        DECL_STATIC_DESTRUCTOR (newdecl) |= DECL_STATIC_DESTRUCTOR (olddecl);
!       DECL_ABSTRACT_VIRTUAL_P (newdecl) |= DECL_ABSTRACT_VIRTUAL_P (olddecl);
        DECL_VIRTUAL_P (newdecl) |= DECL_VIRTUAL_P (olddecl);
        DECL_NEEDS_FINAL_OVERRIDER_P (newdecl) |= DECL_NEEDS_FINAL_OVERRIDER_P (olddecl);
        DECL_THIS_STATIC (newdecl) |= DECL_THIS_STATIC (olddecl);
--- 3247,3253 ----
  	DECL_PENDING_INLINE_INFO (newdecl) = DECL_PENDING_INLINE_INFO (olddecl);
        DECL_STATIC_CONSTRUCTOR (newdecl) |= DECL_STATIC_CONSTRUCTOR (olddecl);
        DECL_STATIC_DESTRUCTOR (newdecl) |= DECL_STATIC_DESTRUCTOR (olddecl);
!       DECL_PURE_VIRTUAL_P (newdecl) |= DECL_PURE_VIRTUAL_P (olddecl);
        DECL_VIRTUAL_P (newdecl) |= DECL_VIRTUAL_P (olddecl);
        DECL_NEEDS_FINAL_OVERRIDER_P (newdecl) |= DECL_NEEDS_FINAL_OVERRIDER_P (olddecl);
        DECL_THIS_STATIC (newdecl) |= DECL_THIS_STATIC (olddecl);
*************** redeclaration_error_message (newdecl, ol
*** 4523,4529 ****
        /* If this is a pure function, its olddecl will actually be
  	 the original initialization to `0' (which we force to call
  	 abort()).  Don't complain about redefinition in this case.  */
!       if (DECL_LANG_SPECIFIC (olddecl) && DECL_ABSTRACT_VIRTUAL_P (olddecl))
  	return 0;
  
        /* If both functions come from different namespaces, this is not
--- 4523,4529 ----
        /* If this is a pure function, its olddecl will actually be
  	 the original initialization to `0' (which we force to call
  	 abort()).  Don't complain about redefinition in this case.  */
!       if (DECL_LANG_SPECIFIC (olddecl) && DECL_PURE_VIRTUAL_P (olddecl))
  	return 0;
  
        /* If both functions come from different namespaces, this is not
*************** lang_mark_tree (t)
*** 14519,14525 ****
  	  ggc_mark_tree (lt->tags);
  	  ggc_mark_tree (lt->search_slot);
  	  ggc_mark_tree (lt->size);
! 	  ggc_mark_tree (lt->abstract_virtuals);
  	  ggc_mark_tree (lt->friend_classes);
  	  ggc_mark_tree (lt->rtti);
  	  ggc_mark_tree (lt->methods);
--- 14519,14525 ----
  	  ggc_mark_tree (lt->tags);
  	  ggc_mark_tree (lt->search_slot);
  	  ggc_mark_tree (lt->size);
! 	  ggc_mark_tree (lt->pure_virtuals);
  	  ggc_mark_tree (lt->friend_classes);
  	  ggc_mark_tree (lt->rtti);
  	  ggc_mark_tree (lt->methods);
Index: decl2.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/decl2.c,v
retrieving revision 1.291
diff -c -p -r1.291 decl2.c
*** decl2.c	1999/12/21 00:19:01	1.291
--- decl2.c	1999/12/29 06:14:12
*************** grok_function_init (decl, init)
*** 1880,1886 ****
  	  DECL_RTL (decl) = DECL_RTL (abort_fndecl);
  	}
  #endif
!       DECL_ABSTRACT_VIRTUAL_P (decl) = 1;
        if (DECL_NAME (decl) == ansi_opname [(int) MODIFY_EXPR])
  	{
  	  tree parmtype
--- 1880,1886 ----
  	  DECL_RTL (decl) = DECL_RTL (abort_fndecl);
  	}
  #endif
!       DECL_PURE_VIRTUAL_P (decl) = 1;
        if (DECL_NAME (decl) == ansi_opname [(int) MODIFY_EXPR])
  	{
  	  tree parmtype
*************** import_export_vtable (decl, type, final)
*** 2420,2426 ****
  	       method = TREE_CHAIN (method))
  	    if (DECL_VINDEX (method) != NULL_TREE
  		&& ! DECL_THIS_INLINE (method)
! 		&& ! DECL_ABSTRACT_VIRTUAL_P (method))
  	      {
  		found = 1;
  		break;
--- 2420,2426 ----
  	       method = TREE_CHAIN (method))
  	    if (DECL_VINDEX (method) != NULL_TREE
  		&& ! DECL_THIS_INLINE (method)
! 		&& ! DECL_PURE_VIRTUAL_P (method))
  	      {
  		found = 1;
  		break;
*************** import_export_class (ctype)
*** 2489,2495 ****
  	{
  	  if (DECL_VINDEX (method) != NULL_TREE
  	      && !DECL_THIS_INLINE (method)
! 	      && !DECL_ABSTRACT_VIRTUAL_P (method))
  	    {
  	      import_export = (DECL_REALLY_EXTERN (method) ? -1 : 1);
  	      break;
--- 2489,2495 ----
  	{
  	  if (DECL_VINDEX (method) != NULL_TREE
  	      && !DECL_THIS_INLINE (method)
! 	      && !DECL_PURE_VIRTUAL_P (method))
  	    {
  	      import_export = (DECL_REALLY_EXTERN (method) ? -1 : 1);
  	      break;
Index: search.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/search.c,v
retrieving revision 1.134
diff -c -p -r1.134 search.c
*** search.c	1999/12/21 02:11:10	1.134
--- search.c	1999/12/29 06:14:14
*************** get_abstract_virtuals_1 (binfo, do_self,
*** 2138,2144 ****
        while (virtuals)
  	{
  	  tree base_fndecl = TREE_VALUE (virtuals);
! 	  if (DECL_ABSTRACT_VIRTUAL_P (base_fndecl))
  	    abstract_virtuals = tree_cons (NULL_TREE, base_fndecl, 
  					   abstract_virtuals);
  	  virtuals = TREE_CHAIN (virtuals);
--- 2138,2144 ----
        while (virtuals)
  	{
  	  tree base_fndecl = TREE_VALUE (virtuals);
! 	  if (DECL_PURE_VIRTUAL_P (base_fndecl))
  	    abstract_virtuals = tree_cons (NULL_TREE, base_fndecl, 
  					   abstract_virtuals);
  	  virtuals = TREE_CHAIN (virtuals);
*************** get_abstract_virtuals_1 (binfo, do_self,
*** 2147,2158 ****
    return abstract_virtuals;
  }
  
! /* Return the list of virtual functions which are abstract in type TYPE.
!    This information is cached, and so must be built on a
!    non-temporary obstack.  */
  
! tree
! get_abstract_virtuals (type)
       tree type;
  {
    tree vbases;
--- 2147,2156 ----
    return abstract_virtuals;
  }
  
! /* Set CLASSTYPE_PURE_VIRTUALS for TYPE.  */
  
! void
! get_pure_virtuals (type)
       tree type;
  {
    tree vbases;
*************** get_abstract_virtuals (type)
*** 2173,2185 ****
  	  tree base_fndecl = TREE_VALUE (virtuals);
  	  if (DECL_NEEDS_FINAL_OVERRIDER_P (base_fndecl))
  	    cp_error ("`%#D' needs a final overrider", base_fndecl);
! 	  else if (DECL_ABSTRACT_VIRTUAL_P (base_fndecl))
  	    abstract_virtuals = tree_cons (NULL_TREE, base_fndecl, 
  					   abstract_virtuals);
  	  virtuals = TREE_CHAIN (virtuals);
  	}
      }
!   return nreverse (abstract_virtuals);
  }
  
  static tree
--- 2171,2184 ----
  	  tree base_fndecl = TREE_VALUE (virtuals);
  	  if (DECL_NEEDS_FINAL_OVERRIDER_P (base_fndecl))
  	    cp_error ("`%#D' needs a final overrider", base_fndecl);
! 	  else if (DECL_PURE_VIRTUAL_P (base_fndecl))
  	    abstract_virtuals = tree_cons (NULL_TREE, base_fndecl, 
  					   abstract_virtuals);
  	  virtuals = TREE_CHAIN (virtuals);
  	}
      }
! 
!   CLASSTYPE_PURE_VIRTUALS (type) = nreverse (abstract_virtuals);
  }
  
  static tree
Index: typeck2.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/typeck2.c,v
retrieving revision 1.69
diff -c -p -r1.69 typeck2.c
*** typeck2.c	1999/12/21 00:19:01	1.69
--- typeck2.c	1999/12/29 06:14:15
*************** abstract_virtuals_error (decl, type)
*** 136,145 ****
    tree u;
    tree tu;
  
!   if (!CLASS_TYPE_P (type) || !CLASSTYPE_ABSTRACT_VIRTUALS (type))
      return 0;
  
!   u = CLASSTYPE_ABSTRACT_VIRTUALS (type);
    if (decl)
      {
        if (TREE_CODE (decl) == RESULT_DECL)
--- 136,145 ----
    tree u;
    tree tu;
  
!   if (!CLASS_TYPE_P (type) || !CLASSTYPE_PURE_VIRTUALS (type))
      return 0;
  
!   u = CLASSTYPE_PURE_VIRTUALS (type);
    if (decl)
      {
        if (TREE_CODE (decl) == RESULT_DECL)
Index: xref.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/xref.c,v
retrieving revision 1.21
diff -c -p -r1.21 xref.c
*** xref.c	1999/09/16 22:33:10	1.21
--- xref.c	1999/12/29 06:14:15
*************** GNU_xref_member(cls, fld)
*** 608,614 ****
      confg = 1;
  
    pure = 0;
!   if (TREE_CODE (fld) == FUNCTION_DECL && DECL_ABSTRACT_VIRTUAL_P(fld))
      pure = 1;
  
    d = IDENTIFIER_POINTER(cls);
--- 608,614 ----
      confg = 1;
  
    pure = 0;
!   if (TREE_CODE (fld) == FUNCTION_DECL && DECL_PURE_VIRTUAL_P(fld))
      pure = 1;
  
    d = IDENTIFIER_POINTER(cls);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]