/* Definitions for switches for C++.
   Copyright (C) 1995 Free Software Foundation, Inc.

This file is part of GNU CC.

GNU CC 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 Software Foundation; either version 2, or (at your option)
any later version.

GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING.  If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */

/* This is the contribution to the `lang_options' array in gcc.c for
   g++.  */

  "-+e0",			/* gcc.c tacks the `-' on the front.  */
  "-+e1",
  "-+e2",
  "-faccess-control",
  "-fno-access-control",
  "-fall-virtual",
  "-fno-all-virtual",
  "-falt-external-templates",
  "-fno-alt-external-templates",
  "-fansi-overloading",
  "-fno-ansi-overloading",
  "-fcheck-new",
  "-fno-check-new",
  "-fconserve-space",
  "-fno-conserve-space",
  "-fdefault-inline",
  "-fno-default-inline",
  "-frtti",
  "-fno-rtti",
  "-felide-constructors",
  "-fno-elide-constructors",
  "-fenum-int-equiv",
  "-fno-enum-int-equiv",
  "-fexternal-templates",
  "-fno-external-templates",
  "-ffor-scope",
  "-fno-for-scope",
  "-fgnu-keywords",
  "-fno-gnu-keywords",
  "-fhandle-signatures",
  "-fno-handle-signatures",
  "-fhuge-objects",
  "-fno-huge-objects",
  "-fimplement-inlines",
  "-fno-implement-inlines",
  "-fimplicit-templates",
  "-fno-implicit-templates",
  "-flabels-ok",
  "-fno-labels-ok",
  "-fmemoize-lookups",
  "-fno-memoize-lookups",
  "-fnonnull-objects",
  "-fno-nonnull-objects",
  "-foperator-names",
  "-fno-operator-names",
  "-frepo",
  "-fno-repo",
  "-fsave-memoized",
  "-fno-save-memoized",
  "-fstats",
  "-fno-stats",
  "-fstrict-prototype",
  "-fno-strict-prototype",
  "-ftemplate-depth-",
  "-fthis-is-variable",
  "-fno-this-is-variable",
  "-fvtable-thunks",
  "-fno-vtable-thunks",
  "-fweak",
  "-fno-weak",
  "-fxref",
  "-fno-xref",

  "-Wreturn-type",
  "-Wno-return-type",
  "-Woverloaded-virtual",
  "-Wno-overloaded-virtual",
  "-Wtemplate-debugging",
  "-Wno-template-debugging",
  "-Wctor-dtor-privacy",
  "-Wno-ctor-dtor-privacy",
  "-Wnon-virtual-dtor",
  "-Wno-non-virtual-dtor",
  "-Wextern-inline",
  "-Wno-extern-inline",
  "-Wreorder",
  "-Wno-reorder",
  "-Wsynth",
  "-Wno-synth",
  "-Wpmf-conversions",
  "-Wno-pmf-conversions",
  "-Weffc++",
  "-Wno-effc++",
