From fcca588c9490ffd09b2d1bcb24f532a2a7b815bc Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 26 Apr 2001 20:05:34 +0000 Subject: [PATCH] invoke.texi: Document more C++ command-line options. * invoke.texi: Document more C++ command-line options. Remove support for -Wextern-inline, -flabels-ok, -fvtable-gc, -fxref * cp-tree.h (warn_extern_inline): Remove. (flag_labels_ok): Likewise. * decl2.c (warn_extern_inline): Remove. (flag_labels_ok): Likewise. (lang_f_options): Remove labels-ok, vtable-gc, xref. (unsupported_options): Add them. (cxx_decode_option): Don't accept -Wextern-inline. * method.c (hack_identifier): Remove -flabels-ok support. * spew.c (see_typename): Likewise. * g++.dg/vtgc1.C: XFAIL. * g++.old-deja/g++.other/crash18.C: Likewise. From-SVN: r41609 --- gcc/cp/cp-tree.h | 8 ------ gcc/cp/decl2.c | 18 +++---------- gcc/cp/method.c | 4 --- gcc/cp/spew.c | 7 +---- gcc/invoke.texi | 27 +++++++++++++++++++ gcc/testsuite/g++.dg/vtgc1.C | 14 ++++++++++ .../g++.old-deja/g++.other/crash18.C | 2 +- 7 files changed, 47 insertions(+), 33 deletions(-) diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 2723c316b4e..ef12e1e4c4b 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -1064,10 +1064,6 @@ extern int warn_ecpp; extern int warn_sign_promo; -/* Non-zero means warn when a function is declared extern and later inline. */ - -extern int warn_extern_inline; - /* Non-zero means warn when an old-style cast is used. */ extern int warn_old_style_cast; @@ -3180,10 +3176,6 @@ typedef enum instantiate_type_flags { itf_ptrmem_ok = 1 << 2, /* pointers to member ok (internal use) */ } instantiate_type_flags; -/* Non-zero means that if a label exists, and no other identifier - applies, use the value of the label. */ -extern int flag_labels_ok; - /* Nonzero means allow Microsoft extensions without a pedwarn. */ extern int flag_ms_extensions; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 0766d8c2161..cb7dd5e2a35 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -273,10 +273,6 @@ int warn_overloaded_virtual; int warn_nonvdtor; -/* Non-zero means warn when a function is declared extern and later inline. */ - -int warn_extern_inline; - /* Non-zero means warn when the compiler will reorder code. */ int warn_reorder; @@ -327,10 +323,6 @@ int warn_deprecated = 1; #endif int dollars_in_ident = DOLLARS_IN_IDENTIFIERS; -/* Nonzero means that labels can be used as first-class objects */ - -int flag_labels_ok; - /* Nonzero means allow Microsoft extensions without a pedwarn. */ int flag_ms_extensions; @@ -473,7 +465,6 @@ lang_f_options[] = {"implement-inlines", &flag_implement_inlines, 1}, {"implicit-inline-templates", &flag_implicit_inline_templates, 1}, {"implicit-templates", &flag_implicit_templates, 1}, - {"labels-ok", &flag_labels_ok, 1}, {"ms-extensions", &flag_ms_extensions, 1}, {"nonansi-builtins", &flag_no_nonansi_builtin, 0}, {"operator-names", &flag_operator_names, 1}, @@ -483,10 +474,8 @@ lang_f_options[] = {"rtti", &flag_rtti, 1}, {"stats", &flag_detailed_statistics, 1}, {"use-cxa-atexit", &flag_use_cxa_atexit, 1}, - {"vtable-gc", &flag_vtable_gc, 1}, {"vtable-thunks", &flag_vtable_thunks, 1}, - {"weak", &flag_weak, 1}, - {"xref", &flag_gnu_xref, 1} + {"weak", &flag_weak, 1} }; /* The list of `-f' options that we no longer support. The `-f' @@ -497,10 +486,13 @@ static const char * const unsupported_options[] = { "cond-mismatch", "enum-int-equiv", "guiding-decls", + "labels-ok", "nonnull-objects", "squangle", "strict-prototype", "this-is-variable", + "vtable-gc", + "xref" }; /* Compare two option strings, pointed two by P1 and P2, for use with @@ -701,8 +693,6 @@ cxx_decode_option (argc, argv) warn_parentheses = setting; else if (!strcmp (p, "non-virtual-dtor")) warn_nonvdtor = setting; - else if (!strcmp (p, "extern-inline")) - warn_extern_inline = setting; else if (!strcmp (p, "reorder")) warn_reorder = setting; else if (!strcmp (p, "synth")) diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 5839767375a..e3c88a4616d 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -182,10 +182,6 @@ hack_identifier (value, name) #endif } } - if (flag_labels_ok && IDENTIFIER_LABEL_VALUE (name)) - { - return IDENTIFIER_LABEL_VALUE (name); - } return error_mark_node; } diff --git a/gcc/cp/spew.c b/gcc/cp/spew.c index a02db1b97bc..ea2392a2cbf 100644 --- a/gcc/cp/spew.c +++ b/gcc/cp/spew.c @@ -701,12 +701,7 @@ see_typename () if (yychar == IDENTIFIER) { lastiddecl = lookup_name (yylval.ttype, -2); - if (lastiddecl == 0) - { - if (flag_labels_ok) - lastiddecl = IDENTIFIER_LABEL_VALUE (yylval.ttype); - } - else + if (lastiddecl) yychar = identifier_type (lastiddecl); } } diff --git a/gcc/invoke.texi b/gcc/invoke.texi index fa7d047e9d7..c096b793f4f 100644 --- a/gcc/invoke.texi +++ b/gcc/invoke.texi @@ -1232,6 +1232,17 @@ two definitions were merged. This option is no longer useful on most targets, now that support has been added for putting variables into BSS without making them common. +@item -fno-const-strings +Give string constants type @code{char *} instead of type @code{const +char *}. By default, G++ uses type @code{const char *} as required by +the standard. Even if you use @samp{-fno-const-strings}, you cannot +actually modify the value of a string constant, unless you also use +@samp{-fwritable-strings}. + +This option might be removed in a future release of G++. For maximum +portability, you should structure your code so that it works with +string constants that have type @code{const char *}. + @item -fdollars-in-identifiers Accept @samp{$} in identifiers. You can also explicitly prohibit use of @samp{$} with the option @samp{-fno-dollars-in-identifiers}. (GNU C allows @@ -1321,6 +1332,11 @@ errors if these functions are not inlined everywhere they are called. Disable pedantic warnings about constructs used in MFC, such as implicit int and getting a pointer to member function via non-standard syntax. +@item -fno-nonansi-builtins +Disable builtin declarations of functions that are not mandated by +ANSI/ISO C. These include @code{ffs}, @code{alloca}, @code{_exit}, +@code{index}, @code{bzero}, @code{conjf}, and other related functions. + @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 @@ -1350,6 +1366,10 @@ 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 -fstats +Emit statistics about front-end processing at the end of the compilation. +This information is generally only useful to the G++ development team. + @item -ftemplate-depth-@var{n} Set the maximum instantiation depth for template classes to @var{n}. A limit on the template instantiation depth is needed to detect @@ -1379,6 +1399,13 @@ those. 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 -fno-weak +Do not use weak symbol support, even if it is provied by the linker. +By default, G++ will use weak symbols if they are available. This +option exists only for testing, and should not be used by end-users; +it will result in inferior code and has no benefits. This option may +be removed in a future release of G++. + @item -nostdinc++ Do not search for header files in the standard directories specific to C++, but do still search the other standard directories. (This option diff --git a/gcc/testsuite/g++.dg/vtgc1.C b/gcc/testsuite/g++.dg/vtgc1.C index 791e4ceb6b8..7006ddeec38 100644 --- a/gcc/testsuite/g++.dg/vtgc1.C +++ b/gcc/testsuite/g++.dg/vtgc1.C @@ -1,5 +1,6 @@ // { dg-do compile } // { dg-options "-fvtable-gc" } +// { dg-excess-errors "-fvtable-gc unsupported" { xfail *-*-* } } // Origin: Hans-Peter Nilsson class Base0 @@ -118,16 +119,29 @@ void x3 (Multivs1 *ii) { ii->f2();} void x4 (Multiss2 *ii) { ii->f2();} void x5 (Multivv3 *ii) { ii->f2();} +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for Multivv3, 0" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*VTT for Multivv3, 0" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for Multiss2, vtable for Base2" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for Multivs1, vtable for Base2" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*VTT for Multivs1, vtable for Base2" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for Multisv0, vtable for Side0" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*VTT for Multisv0, vtable for Side0" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for Side0, 0" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for VbasedA, 0" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*VTT for VbasedA, 0" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for Base2, vtable for Base1" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for Base1, vtable for Base0" } } +// { dg-final { setup_xfail *-*-* } } // { dg-final { scan-assembler-dem vtgc1.C "\.vtable_inherit\[ \t\]*vtable for Base0, 0" } } diff --git a/gcc/testsuite/g++.old-deja/g++.other/crash18.C b/gcc/testsuite/g++.old-deja/g++.other/crash18.C index ce0f64621c9..2fa185f56f1 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/crash18.C +++ b/gcc/testsuite/g++.old-deja/g++.other/crash18.C @@ -1,7 +1,7 @@ // Build don't link: // Special g++ Options: -fvtable-gc // Origin: Mark Mitchell -// excess errors test - XFAIL *-*-coff *-*-aout *-*-hms mips*-sgi-irix* +// excess errors test - XFAIL *-*-* struct S { virtual void f (); -- 2.30.2