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: Remove -fsquangle and simplify RTTI code



This patch removes a few more remnants of the old ABI.

I will apply this on the branch, too, since the removal of
command-line options that applied only to the old ABI will avoid user
confusion.

Tested on i686-pc-linux-gnu, applied on the mainline.

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

2001-02-17  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (-fsquangle): Remove documentation.
	(-fname-mangling-version): Likewise.

2001-02-17  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (new_abi_rtti_p): Remove.
	(name_mangling_version): Likewise.
	(flag_do_squangling): Likewise.
	* class.c (build_rtti_vtbl_entries): Remove old ABI support.
	* decl.c (grokfndecl): Likewise.
	* decl2.c (name_mangling_version): Remove.
	(flag_do_squangling): Likewise.
	(lang_f_options): Remove `squangle'.
	(unsupported_options): Add `squangle'.
	(cxx_decode_option): Issue a warning about uses of
	-fname-mangling-version.
	(finish_file): Remove old ABI support.
	* pt.c (check_explicit_specialization): Likewise.
	(tsubst_decl): Likewise.
	* rtti.c (init_rtti_processing): Likewise.
	(build_headof): Likewise.
	(get_tinfo_decl_dynamic): Likewise.
	(tinfo_from_decl): Likewise.
	(build_dynamic_cast_1): Likewise.
	(synthesize_tinfo_var): Likewise.
	* init.c (build_new): Allow enumeration types for the array-bounds
	in a direct-new-declarator.

Index: invoke.texi
===================================================================
RCS file: /cvs/gcc/gcc/gcc/invoke.texi,v
retrieving revision 1.278
diff -c -p -r1.278 invoke.texi
*** invoke.texi	2001/02/17 23:45:54	1.278
--- invoke.texi	2001/02/18 20:21:50
*************** in the following sections.
*** 172,180 ****
  -fhuge-objects  -fno-implicit-templates @gol
  -fno-implicit-inline-templates @gol
  -fno-implement-inlines  -fms-extensions @gol
! -fname-mangling-version-@var{n}  -fno-operator-names @gol
  -fno-optional-diags  -fpermissive @gol
! -frepo  -fno-rtti  -fsquangle  -ftemplate-depth-@var{n} @gol
  -fuse-cxa-atexit  -fvtable-thunks  -nostdinc++ @gol
  -fno-default-inline  -Wctor-dtor-privacy @gol
  -Wnon-virtual-dtor  -Wreorder @gol
--- 172,180 ----
  -fhuge-objects  -fno-implicit-templates @gol
  -fno-implicit-inline-templates @gol
  -fno-implement-inlines  -fms-extensions @gol
! -fno-operator-names @gol
  -fno-optional-diags  -fpermissive @gol
! -frepo  -fno-rtti -ftemplate-depth-@var{n} @gol
  -fuse-cxa-atexit  -fvtable-thunks  -nostdinc++ @gol
  -fno-default-inline  -Wctor-dtor-privacy @gol
  -Wnon-virtual-dtor  -Wreorder @gol
*************** errors if these functions are not inline
*** 1317,1336 ****
  Disable pedantic warnings about constructs used in MFC, such as implicit
  int and getting a pointer to member function via non-standard syntax.
  
- @item -fname-mangling-version-@var{n}
- Control the way in which names are mangled.  Version 0 is compatible
- with versions of g++ before 2.8.  Version 1 is the default.  Version 1
- will allow correct mangling of function templates.  For example, 
- version 0 mangling does not mangle foo<int, double> and foo<int, char>
- given this declaration:
- 
- @example
- template <class T, class U> void foo(T t);
- @end example
- 
- Like all options that change the ABI, all C++ code, @emph{including
- libgcc} must be built with the same setting of this option.
- 
  @item -fno-operator-names
  Do not treat the operator name keywords @code{and}, @code{bitand},
  @code{bitor}, @code{compl}, @code{not}, @code{or} and @code{xor} as
--- 1317,1322 ----
*************** functions for use by the C++ runtime typ
*** 1359,1376 ****
  of the language, you can save some space by using this flag.  Note that
  exception handling uses the same information, but it will generate it as
  needed.
- 
- @item -fsquangle
- @itemx -fno-squangle
- @samp{-fsquangle} will enable a compressed form of name mangling for
- identifiers. In particular, it helps to shorten very long names by recognizing
- types and class names which occur more than once, replacing them with special
- short ID codes.  This option also requires any C++ libraries being used to
- be compiled with this option as well.  The compiler has this disabled (the
- equivalent of @samp{-fno-squangle}) by default.
- 
- Like all options that change the ABI, all C++ code, @emph{including
- libgcc.a} must be built with the same setting of this option.
  
  @item -ftemplate-depth-@var{n}
  Set the maximum instantiation depth for template classes to @var{n}.
--- 1345,1350 ----
Index: cp/class.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/class.c,v
retrieving revision 1.360
diff -c -p -r1.360 class.c
*** class.c	2001/02/14 10:49:26	1.360
--- class.c	2001/02/18 20:22:01
*************** build_rtti_vtbl_entries (binfo, rtti_bin
*** 7766,7800 ****
      }
    offset = size_diffop (BINFO_OFFSET (rtti_binfo), BINFO_OFFSET (b));
  
!   /* The second entry is, in the case of the new ABI, the address of
!      the typeinfo object, or, in the case of the old ABI, a function
!      which returns a typeinfo object.  */
!   if (new_abi_rtti_p ())
!     {
!       if (flag_rtti)
! 	decl = build_unary_op (ADDR_EXPR, get_tinfo_decl (t), 0);
!       else
! 	decl = integer_zero_node;
! 
!       /* Convert the declaration to a type that can be stored in the
! 	 vtable.  */
!       init = build1 (NOP_EXPR, vfunc_ptr_type_node, decl);
!       TREE_CONSTANT (init) = 1;
!     }
    else
!     {
!       if (flag_rtti)
! 	decl = get_tinfo_decl (t);
!       else
! 	decl = abort_fndecl;
! 
!       /* Convert the declaration to a type that can be stored in the
! 	 vtable.  */
!       init = build1 (ADDR_EXPR, vfunc_ptr_type_node, decl);
!       TREE_CONSTANT (init) = 1;
!       init = build_vtable_entry (offset, NULL_TREE, init, 
! 				 /*generate_with_vtable_p=*/0);
!     }
    *vid->last_init = build_tree_list (NULL_TREE, init);
    vid->last_init = &TREE_CHAIN (*vid->last_init);
  
--- 7766,7781 ----
      }
    offset = size_diffop (BINFO_OFFSET (rtti_binfo), BINFO_OFFSET (b));
  
!   /* The second entry is the address of the typeinfo object.  */
!   if (flag_rtti)
!     decl = build_unary_op (ADDR_EXPR, get_tinfo_decl (t), 0);
    else
!     decl = integer_zero_node;
!   
!   /* Convert the declaration to a type that can be stored in the
!      vtable.  */
!   init = build1 (NOP_EXPR, vfunc_ptr_type_node, decl);
!   TREE_CONSTANT (init) = 1;
    *vid->last_init = build_tree_list (NULL_TREE, init);
    vid->last_init = &TREE_CHAIN (*vid->last_init);
  
Index: cp/cp-tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/cp-tree.h,v
retrieving revision 1.577
diff -c -p -r1.577 cp-tree.h
*** cp-tree.h	2001/02/17 00:12:43	1.577
--- cp-tree.h	2001/02/18 20:22:04
*************** extern int flag_huge_objects;
*** 261,271 ****
     class).  */
  #define all_overridden_vfuns_in_vtables_p() (1)
  
- /* Nonzero if we use access type_info objects directly, and use the
-    cross-vendor layout for them. Zero if we use an accessor function
-    to get the type_info object address.  */
- #define new_abi_rtti_p() (1)
- 
  /* Nonzero if primary and secondary vtables are combined into a single
     vtable.  */
  #define merge_primary_and_secondary_vtables_p() (1)
--- 261,266 ----
*************** extern int flag_ansi;
*** 1114,1128 ****
     inline by default.  */
  
  extern int flag_default_inline;
- 
- /* The name-mangling scheme to use.  Versions of gcc before 2.8 use
-    version 0.  */
- extern int name_mangling_version;
- 
- /* Nonzero if squashed mangling is to be performed.
-    This uses the B and K codes to reference previously seen class types
-    and class qualifiers.       */
- extern int flag_do_squangling;
  
  /* Nonzero means generate separate instantiation control files and juggle
     them at link time.  */
--- 1109,1114 ----
Index: cp/decl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/decl.c,v
retrieving revision 1.749
diff -c -p -r1.749 decl.c
*** decl.c	2001/02/16 22:52:27	1.749
--- decl.c	2001/02/18 20:22:13
*************** grokfndecl (ctype, type, declarator, ori
*** 8859,8865 ****
    /* Plain overloading: will not be grok'd by grokclassfn.  */
    if (! ctype && ! processing_template_decl
        && (! DECL_EXTERN_C_P (decl) || DECL_OVERLOADED_OPERATOR_P (decl))
!       && (! DECL_USE_TEMPLATE (decl) || name_mangling_version < 1))
      set_mangled_name_for_decl (decl);
  
    if (funcdef_flag)
--- 8859,8865 ----
    /* Plain overloading: will not be grok'd by grokclassfn.  */
    if (! ctype && ! processing_template_decl
        && (! DECL_EXTERN_C_P (decl) || DECL_OVERLOADED_OPERATOR_P (decl))
!       && ! DECL_USE_TEMPLATE (decl))
      set_mangled_name_for_decl (decl);
  
    if (funcdef_flag)
Index: cp/decl2.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/decl2.c,v
retrieving revision 1.439
diff -c -p -r1.439 decl2.c
*** decl2.c	2001/02/17 00:12:44	1.439
--- decl2.c	2001/02/18 20:22:16
*************** int flag_inline_trees = 0;
*** 430,446 ****
  
  int max_tinst_depth = 50;
  
- /* The name-mangling scheme to use.  Must be 1 or greater to support
-    template functions with identical types, but different template
-    arguments.  */
- int name_mangling_version = 2;
- 
- /* Nonzero if squashed mangling is to be performed. 
-    This uses the B and K codes to reference previously seen class types 
-    and class qualifiers.       */
- 
- int flag_do_squangling;
- 
  /* Nonzero means output .vtable_{entry,inherit} for use in doing vtable gc.  */
  
  int flag_vtable_gc;
--- 430,435 ----
*************** lang_f_options[] =
*** 507,513 ****
    {"permissive", &flag_permissive, 1},
    {"repo", &flag_use_repository, 1},
    {"rtti", &flag_rtti, 1},
-   {"squangle", &flag_do_squangling, 1},
    {"stats", &flag_detailed_statistics, 1},
    {"use-cxa-atexit", &flag_use_cxa_atexit, 1},
    {"vtable-gc", &flag_vtable_gc, 1},
--- 496,501 ----
*************** static const char * const unsupported_op
*** 525,532 ****
    "enum-int-equiv",
    "guiding-decls",
    "nonnull-objects",
!   "this-is-variable",
    "strict-prototype",
  };
  
  /* Compare two option strings, pointed two by P1 and P2, for use with
--- 513,521 ----
    "enum-int-equiv",
    "guiding-decls",
    "nonnull-objects",
!   "squangle",
    "strict-prototype",
+   "this-is-variable",
  };
  
  /* Compare two option strings, pointed two by P1 and P2, for use with
*************** cxx_decode_option (argc, argv)
*** 617,624 ****
  	  = read_integral_parameter (option_value, p - 2, max_tinst_depth);
        else if ((option_value
                  = skip_leading_substring (p, "name-mangling-version-")))
! 	name_mangling_version 
! 	  = read_integral_parameter (option_value, p - 2, name_mangling_version);
        else if ((option_value
                  = skip_leading_substring (p, "dump-translation-unit=")))
  	{
--- 606,615 ----
  	  = read_integral_parameter (option_value, p - 2, max_tinst_depth);
        else if ((option_value
                  = skip_leading_substring (p, "name-mangling-version-")))
! 	{
! 	  warning ("-fname-mangling-version is no longer supported");
! 	  return 1;
! 	}
        else if ((option_value
                  = skip_leading_substring (p, "dump-translation-unit=")))
  	{
*************** finish_file ()
*** 3563,3570 ****
  
    timevar_push (TV_VARCONST);
  
!   if (new_abi_rtti_p ())
!     emit_support_tinfos ();
    
    do 
      {
--- 3554,3560 ----
  
    timevar_push (TV_VARCONST);
  
!   emit_support_tinfos ();
    
    do 
      {
*************** finish_file ()
*** 3584,3591 ****
        
        /* Write out needed type info variables. Writing out one variable
           might cause others to be needed.  */
!       if (new_abi_rtti_p ()
!           && walk_globals (tinfo_decl_p, emit_tinfo_decl, /*data=*/0))
  	reconsider = 1;
  
        /* The list of objects with static storage duration is built up
--- 3574,3580 ----
        
        /* Write out needed type info variables. Writing out one variable
           might cause others to be needed.  */
!       if (walk_globals (tinfo_decl_p, emit_tinfo_decl, /*data=*/0))
  	reconsider = 1;
  
        /* The list of objects with static storage duration is built up
Index: cp/pt.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/pt.c,v
retrieving revision 1.520
diff -c -p -r1.520 pt.c
*** pt.c	2001/02/18 00:28:59	1.520
--- pt.c	2001/02/18 20:22:23
*************** check_explicit_specialization (declarato
*** 1682,1689 ****
  	     treatment.  We do this here so that the ordinary,
  	     non-template, name-mangling algorithm will not be used
  	     later.  */
! 	  if ((is_member_template (tmpl) || ctype == NULL_TREE)
! 	      && name_mangling_version >= 1)
  	    set_mangled_name_for_template_decl (decl);
  
  	  if (is_friend && !have_def)
--- 1682,1688 ----
  	     treatment.  We do this here so that the ordinary,
  	     non-template, name-mangling algorithm will not be used
  	     later.  */
! 	  if (is_member_template (tmpl) || ctype == NULL_TREE)
  	    set_mangled_name_for_template_decl (decl);
  
  	  if (is_friend && !have_def)
*************** tsubst_decl (t, args, type)
*** 5868,5875 ****
  		
  		/* TMPL will be NULL if this is a specialization of a
  		   member function of a template class.  */
! 		if (name_mangling_version < 1
! 		    || tmpl == NULL_TREE
  		    || (member && !is_member_template (tmpl)
  			&& !DECL_TEMPLATE_INFO (tmpl)))
  		  set_mangled_name_for_decl (r);
--- 5867,5873 ----
  		
  		/* TMPL will be NULL if this is a specialization of a
  		   member function of a template class.  */
! 		if (tmpl == NULL_TREE
  		    || (member && !is_member_template (tmpl)
  			&& !DECL_TEMPLATE_INFO (tmpl)))
  		  set_mangled_name_for_decl (r);
Index: cp/rtti.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/rtti.c,v
retrieving revision 1.109
diff -c -p -r1.109 rtti.c
*** rtti.c	2001/02/12 09:58:18	1.109
--- rtti.c	2001/02/18 20:22:23
*************** init_rtti_processing ()
*** 79,102 ****
      (class_type_node, get_identifier ("type_info"), 1);
    if (flag_honor_std)
      pop_namespace ();
!   if (!new_abi_rtti_p ())
!     {
!       tinfo_decl_id = get_identifier ("__tf");
!       tinfo_decl_type = build_function_type
!         (build_reference_type
!           (build_qualified_type
!             (type_info_type_node, TYPE_QUAL_CONST)),
!          void_list_node);
!       tinfo_var_id = get_identifier ("__ti");
!     }
!   else
!     {
!       /* FIXME: These identifier prefixes are not set in stone yet.  */
!       tinfo_decl_id = get_identifier ("__ti");
!       tinfo_var_id = get_identifier ("__tn");
!       tinfo_decl_type = build_qualified_type
!                           (type_info_type_node, TYPE_QUAL_CONST);
!     }
  }
  
  /* Given a pointer to an object with at least one virtual table
--- 79,89 ----
      (class_type_node, get_identifier ("type_info"), 1);
    if (flag_honor_std)
      pop_namespace ();
!   /* FIXME: These identifier prefixes are not set in stone yet.  */
!   tinfo_decl_id = get_identifier ("__ti");
!   tinfo_var_id = get_identifier ("__tn");
!   tinfo_decl_type = 
!     build_qualified_type (type_info_type_node, TYPE_QUAL_CONST);
  }
  
  /* Given a pointer to an object with at least one virtual table
*************** build_headof (exp)
*** 150,160 ****
  
    /* Under the new ABI, the offset-to-top field is at index -2 from
       the vptr.  */
!   if (new_abi_rtti_p ())
!     index = build_int_2 (-2, -1);
!   /* But under the old ABI, it is at offset zero.  */
!   else
!     index = integer_zero_node;
  
    aref = build_vtbl_ref (build_indirect_ref (exp, NULL_PTR), index);
  
--- 137,143 ----
  
    /* Under the new ABI, the offset-to-top field is at index -2 from
       the vptr.  */
!   index = build_int_2 (-2, -1);
  
    aref = build_vtbl_ref (build_indirect_ref (exp, NULL_PTR), index);
  
*************** get_tinfo_decl_dynamic (exp)
*** 253,266 ****
  	  exp = build_indirect_ref (exp, NULL_PTR);
  	}
  
!       /* The RTTI information is always in the vtable, but it's at
! 	 different indices depending on the ABI.  */
!       if (new_abi_rtti_p ())
! 	index = integer_minus_one_node;
!       else if (flag_vtable_thunks)
! 	index = integer_one_node;
!       else
! 	index = integer_zero_node;
        t = build_vfn_ref ((tree *) 0, exp, index);
        TREE_TYPE (t) = build_pointer_type (tinfo_decl_type);
        return t;
--- 236,243 ----
  	  exp = build_indirect_ref (exp, NULL_PTR);
  	}
  
!       /* The RTTI information is at index -1.  */
!       index = integer_minus_one_node;
        t = build_vfn_ref ((tree *) 0, exp, index);
        TREE_TYPE (t) = build_pointer_type (tinfo_decl_type);
        return t;
*************** tinfo_from_decl (expr)
*** 397,405 ****
  {
    tree t;
    
!   if (!new_abi_rtti_p ())
!     t = build_call (expr, NULL_TREE);
!   else if (TREE_CODE (TREE_TYPE (expr)) == POINTER_TYPE)
      t = build_indirect_ref (expr, NULL);
    else
      t = expr;
--- 374,380 ----
  {
    tree t;
    
!   if (TREE_CODE (TREE_TYPE (expr)) == POINTER_TYPE)
      t = build_indirect_ref (expr, NULL);
    else
      t = expr;
*************** build_dynamic_cast_1 (type, expr)
*** 717,783 ****
  	  if (tc == REFERENCE_TYPE)
  	    expr1 = build_unary_op (ADDR_EXPR, expr1, 0);
  
!           if (!new_abi_rtti_p ())
!             {
! 	      tree expr2 = build_headof (expr1);
! 	      tree td1 = expr;
! 
! 	      if (tc == POINTER_TYPE)
! 	        td1 = build_indirect_ref (td1, NULL_PTR);
!   	      td1 = get_tinfo_decl_dynamic (td1);
! 	  
!               elems = tree_cons
! 	        (NULL_TREE, td1, tree_cons
! 	          (NULL_TREE, td2, tree_cons
! 	            (NULL_TREE, boff, tree_cons
! 	              (NULL_TREE, expr2, tree_cons
! 	                (NULL_TREE, td3, tree_cons
! 		          (NULL_TREE, expr1, NULL_TREE))))));
! 	    }
! 	  else
! 	    elems = tree_cons
! 	      (NULL_TREE, expr1, tree_cons
! 	        (NULL_TREE, td3, tree_cons
!   	          (NULL_TREE, td2, tree_cons
!                     (NULL_TREE, boff, NULL_TREE))));
  
  	  dcast_fn = dynamic_cast_node;
  	  if (!dcast_fn)
  	    {
  	      tree tmp;
  	      tree tinfo_ptr;
! 	      tree ns = new_abi_rtti_p () ? abi_node : global_namespace;
  	      const char *name;
  	      
  	      push_nested_namespace (ns);
! 	      if (!new_abi_rtti_p ())
! 	        {
!     	          tinfo_ptr = build_pointer_type (tinfo_decl_type);
!   	          name = "__dynamic_cast_2";
! 	          tmp = tree_cons
! 		    (NULL_TREE, tinfo_ptr, tree_cons
! 		      (NULL_TREE, tinfo_ptr, tree_cons
! 	                (NULL_TREE, integer_type_node, tree_cons
! 		          (NULL_TREE, ptr_type_node, tree_cons
! 		            (NULL_TREE, tinfo_ptr, tree_cons
! 		              (NULL_TREE, ptr_type_node, void_list_node))))));
! 	        }
! 	      else
! 	        {
!                   tinfo_ptr = xref_tag (class_type_node,
!                                         get_identifier ("__class_type_info"),
!                                         1);
!                     
!                   tinfo_ptr = build_pointer_type
!                                 (build_qualified_type
!                                   (tinfo_ptr, TYPE_QUAL_CONST));
!   	          name = "__dynamic_cast";
!   	          tmp = tree_cons
! 	            (NULL_TREE, const_ptr_type_node, tree_cons
! 	              (NULL_TREE, tinfo_ptr, tree_cons
! 	                (NULL_TREE, tinfo_ptr, tree_cons
! 	                  (NULL_TREE, ptrdiff_type_node, void_list_node))));
! 	        }
  	      tmp = build_function_type (ptr_type_node, tmp);
  	      dcast_fn = build_library_fn_ptr (name, tmp);
                pop_nested_namespace (ns);
--- 692,725 ----
  	  if (tc == REFERENCE_TYPE)
  	    expr1 = build_unary_op (ADDR_EXPR, expr1, 0);
  
! 	  elems = tree_cons
! 	    (NULL_TREE, expr1, tree_cons
! 	     (NULL_TREE, td3, tree_cons
! 	      (NULL_TREE, td2, tree_cons
! 	       (NULL_TREE, boff, NULL_TREE))));
  
  	  dcast_fn = dynamic_cast_node;
  	  if (!dcast_fn)
  	    {
  	      tree tmp;
  	      tree tinfo_ptr;
! 	      tree ns = abi_node;
  	      const char *name;
  	      
  	      push_nested_namespace (ns);
! 	      tinfo_ptr = xref_tag (class_type_node,
! 				    get_identifier ("__class_type_info"),
! 				    1);
! 	      
! 	      tinfo_ptr = build_pointer_type
! 		(build_qualified_type
! 		 (tinfo_ptr, TYPE_QUAL_CONST));
! 	      name = "__dynamic_cast";
! 	      tmp = tree_cons
! 		(NULL_TREE, const_ptr_type_node, tree_cons
! 		 (NULL_TREE, tinfo_ptr, tree_cons
! 		  (NULL_TREE, tinfo_ptr, tree_cons
! 		   (NULL_TREE, ptrdiff_type_node, void_list_node))));
  	      tmp = build_function_type (ptr_type_node, tmp);
  	      dcast_fn = build_library_fn_ptr (name, tmp);
                pop_nested_namespace (ns);
*************** synthesize_tinfo_var (target_type, real_
*** 1134,1141 ****
    tree var_type = NULL_TREE;
    int non_public = 0;
    
-   my_friendly_assert (new_abi_rtti_p (), 20000118);
- 
    switch (TREE_CODE (target_type))
      {
      case POINTER_TYPE:
--- 1076,1081 ----
Index: testsuite/g++.old-deja/g++.other/mangle1.C
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.old-deja/g++.other/mangle1.C,v
retrieving revision 1.5
diff -c -p -r1.5 mangle1.C
*** mangle1.C	2000/06/11 03:44:49	1.5
--- mangle1.C	2001/02/18 20:22:26
***************
*** 1,5 ****
  // Test for proper mangling by setting up name clashes.
- // Special g++ Options: -fno-squangle
  
  #if (!defined (__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100)
  #define NAME(OLD, NEW) OLD
--- 1,4 ----
Index: testsuite/g++.old-deja/g++.other/static8.C
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.old-deja/g++.other/static8.C,v
retrieving revision 1.5
diff -c -p -r1.5 static8.C
*** static8.C	2000/06/12 23:48:12	1.5
--- static8.C	2001/02/18 20:22:26
***************
*** 1,5 ****
  // Build don't link:
- // Special g++ Options: -fno-squangle
  // Origin: Mark Mitchell <mark@codesourcery.com>
  
  #if (!defined (__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100)
--- 1,4 ----


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