summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/cp/g++.1
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2002-02-01 18:16:02 +0000
committerobrien <obrien@FreeBSD.org>2002-02-01 18:16:02 +0000
commitc9ab9ae440a8066b2c2b85b157b1fdadcf09916a (patch)
tree086d9d6c8fbd4fc8fe4495059332f66bc0f8d12b /contrib/gcc/cp/g++.1
parent2ecfd8bd04b63f335c1ec6295740a4bfd97a4fa6 (diff)
downloadFreeBSD-src-c9ab9ae440a8066b2c2b85b157b1fdadcf09916a.zip
FreeBSD-src-c9ab9ae440a8066b2c2b85b157b1fdadcf09916a.tar.gz
Enlist the FreeBSD-CURRENT users as testers of what is to become Gcc 3.1.0.
These bits are taken from the FSF anoncvs repo on 1-Feb-2002 08:20 PST.
Diffstat (limited to 'contrib/gcc/cp/g++.1')
-rw-r--r--contrib/gcc/cp/g++.1643
1 files changed, 1 insertions, 642 deletions
diff --git a/contrib/gcc/cp/g++.1 b/contrib/gcc/cp/g++.1
index 5101d5f..a5be7bce 100644
--- a/contrib/gcc/cp/g++.1
+++ b/contrib/gcc/cp/g++.1
@@ -1,642 +1 @@
-.\" Copyright (c) 1991, 1992 Free Software Foundation -*-Text-*-
-.\" See section COPYING for conditions for redistribution
-.\" FIXME: no info here on predefines. Should there be? extra for C++...
-.TH G++ 1 "30apr1993" "GNU Tools" "GNU Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-.SH NAME
-g++ \- GNU project C++ Compiler
-.SH SYNOPSIS
-.RB g++ " [" \c
-.IR option " | " filename " ].\|.\|.
-.SH DESCRIPTION
-The C and C++ compilers are integrated;
-.B g++
-is a script to call
-.B gcc with options to recognize C++.
-.B gcc
-processes input files
-through one or more of four stages: preprocessing, compilation,
-assembly, and linking. This man page contains full descriptions for
-.I only
-C++ specific aspects of the compiler, though it also contains
-summaries of some general-purpose options. For a fuller explanation
-of the compiler, see
-.BR gcc ( 1 ).
-
-C++ source files use one of the suffixes `\|\c
-.B .C\c
-\&\|', `\|\c
-.B .cc\c
-\&\|', `\|\c
-.B .cxx\c
-\&\|', `\|\c
-.B .cpp\c
-\&\|', or `\|\c
-.B .c++\c
-\&\|'; preprocessed C++ files use the suffix `\|\c
-.B .ii\c
-\&\|'.
-.SH OPTIONS
-There are many command-line options, including options to control
-details of optimization, warnings, and code generation, which are
-common to both
-.B gcc
-and
-.B g++\c
-\&. For full information on all options, see
-.BR gcc ( 1 ).
-
-Options must be separate: `\|\c
-.B \-dr\c
-\&\|' is quite different from `\|\c
-.B \-d \-r
-\&\|'.
-
-Most `\|\c
-.B \-f\c
-\&\|' and `\|\c
-.B \-W\c
-\&\|' options have two contrary forms:
-.BI \-f name
-and
-.BI \-fno\- name\c
-\& (or
-.BI \-W name
-and
-.BI \-Wno\- name\c
-\&). Only the non-default forms are shown here.
-
-.TP
-.B \-c
-Compile or assemble the source files, but do not link. The compiler
-output is an object file corresponding to each source file.
-.TP
-.BI \-D macro
-Define macro \c
-.I macro\c
-\& with the string `\|\c
-.B 1\c
-\&\|' as its definition.
-.TP
-.BI \-D macro = defn
-Define macro \c
-.I macro\c
-\& as \c
-.I defn\c
-\&.
-.TP
-.B \-E
-Stop after the preprocessing stage; do not run the compiler proper. The
-output is preprocessed source code, which is sent to the
-standard output.
-.TP
-.B \-fall\-virtual
-Treat all possible member functions as virtual, implicitly. All
-member functions (except for constructor functions and
-.B new
-or
-.B delete
-member operators) are treated as virtual functions of the class where
-they appear.
-
-This does not mean that all calls to these member functions will be
-made through the internal table of virtual functions. Under some
-circumstances, the compiler can determine that a call to a given
-virtual function can be made directly; in these cases the calls are
-direct in any case.
-.TP
-.B \-fdollars\-in\-identifiers
-Permit the use of `\|\c
-.B $\c
-\&\|' in identifiers.
-Traditional C allowed the character `\|\c
-.B $\c
-\&\|' to form part of identifiers; by default, GNU C also
-allows this. However, ANSI C forbids `\|\c
-.B $\c
-\&\|' in identifiers, and GNU C++ also forbids it by default on most
-platforms (though on some platforms it's enabled by default for GNU
-C++ as well).
-.TP
-.B \-felide\-constructors
-Use this option to instruct the compiler to be smarter about when it can
-elide constructors. Without this flag, GNU C++ and cfront both
-generate effectively the same code for:
-.sp
-.br
-A\ foo\ ();
-.br
-A\ x\ (foo\ ());\ \ \ //\ x\ initialized\ by\ `foo\ ()',\ no\ ctor\ called
-.br
-A\ y\ =\ foo\ ();\ \ \ //\ call\ to\ `foo\ ()'\ heads\ to\ temporary,
-.br
-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ //\ y\ is\ initialized\ from\ the\ temporary.
-.br
-.sp
-Note the difference! With this flag, GNU C++ initializes `\|\c
-.B y\c
-\&\|' directly
-from the call to
-.B foo ()
-without going through a temporary.
-.TP
-.B \-fenum\-int\-equiv
-Normally GNU C++ allows conversion of
-.B enum
-to
-.B int\c
-\&, but not the other way around. Use this option if you want GNU C++
-to allow conversion of
-.B int
-to
-.B enum
-as well.
-.TP
-.B \-fexternal\-templates
-Produce smaller code for template declarations, by generating only a
-single copy of each template function where it is defined.
-To use this option successfully, you must also mark all files that
-use templates with either `\|\c
-.B #pragma implementation\c
-\&\|' (the definition) or
-`\|\c
-.B #pragma interface\c
-\&\|' (declarations).
-
-When your code is compiled with `\|\c
-.B \-fexternal\-templates\c
-\&\|', all
-template instantiations are external. You must arrange for all
-necessary instantiations to appear in the implementation file; you can
-do this with a \c
-.B typedef\c
-\& that references each instantiation needed.
-Conversely, when you compile using the default option
-`\|\c
-.B \-fno\-external\-templates\c
-\&\|', all template instantiations are
-explicitly internal.
-.TP
-.B \-fno\-gnu\-linker
-Do not output global initializations (such as C++ constructors and
-destructors) in the form used by the GNU linker (on systems where the GNU
-linker is the standard method of handling them). Use this option when
-you want to use a non-GNU linker, which also requires using the
-.B collect2
-program to make sure the system linker includes
-constructors and destructors. (\c
-.B collect2
-is included in the GNU CC distribution.) For systems which
-.I must
-use
-.B collect2\c
-\&, the compiler driver
-.B gcc
-is configured to do this automatically.
-.TP
-.B \-fmemoize\-lookups
-.TP
-.B \-fsave\-memoized
-These flags are used to get the compiler to compile programs faster
-using heuristics. They are not on by default since they are only effective
-about half the time. The other half of the time programs compile more
-slowly (and take more memory).
-
-The first time the compiler must build a call to a member function (or
-reference to a data member), it must (1) determine whether the class
-implements member functions of that name; (2) resolve which member
-function to call (which involves figuring out what sorts of type
-conversions need to be made); and (3) check the visibility of the member
-function to the caller. All of this adds up to slower compilation.
-Normally, the second time a call is made to that member function (or
-reference to that data member), it must go through the same lengthy
-process again. This means that code like this
-.sp
-.br
-\ \ cout\ <<\ "This\ "\ <<\ p\ <<\ "\ has\ "\ <<\ n\ <<\ "\ legs.\en";
-.br
-.sp
-makes six passes through all three steps. By using a software cache,
-a ``hit'' significantly reduces this cost. Unfortunately, using the
-cache introduces another layer of mechanisms which must be implemented,
-and so incurs its own overhead. `\|\c
-.B \-fmemoize\-lookups\c
-\&\|' enables
-the software cache.
-
-Because access privileges (visibility) to members and member functions
-may differ from one function context to the next,
-.B g++
-may need to flush the cache. With the `\|\c
-.B \-fmemoize\-lookups\c
-\&\|' flag, the cache is flushed after every
-function that is compiled. The `\|\c
-\-fsave\-memoized\c
-\&\|' flag enables the same software cache, but when the compiler
-determines that the context of the last function compiled would yield
-the same access privileges of the next function to compile, it
-preserves the cache.
-This is most helpful when defining many member functions for the same
-class: with the exception of member functions which are friends of
-other classes, each member function has exactly the same access
-privileges as every other, and the cache need not be flushed.
-.TP
-.B \-fno\-default\-inline
-Do not make member functions inline by default merely because they are
-defined inside the class scope. Otherwise, when you specify
-.B \-O\c
-\&, member functions defined inside class scope are compiled
-inline by default; i.e., you don't need to add `\|\c
-.B inline\c
-\&\|' in front of
-the member function name.
-.TP
-.B \-fno\-strict\-prototype
-Consider the declaration \c
-.B int foo ();\c
-\&. In C++, this means that the
-function \c
-.B foo\c
-\& takes no arguments. In ANSI C, this is declared
-.B int foo(void);\c
-\&. With the flag `\|\c
-.B \-fno\-strict\-prototype\c
-\&\|',
-declaring functions with no arguments is equivalent to declaring its
-argument list to be untyped, i.e., \c
-.B int foo ();\c
-\& is equivalent to
-saying \c
-.B int foo (...);\c
-\&.
-.TP
-.B \-fnonnull\-objects
-Normally, GNU C++ makes conservative assumptions about objects reached
-through references. For example, the compiler must check that `\|\c
-.B a\c
-\&\|' is not null in code like the following:
-.br
-\ \ \ \ obj\ &a\ =\ g\ ();
-.br
-\ \ \ \ a.f\ (2);
-.br
-Checking that references of this sort have non-null values requires
-extra code, however, and it is unnecessary for many programs. You can
-use `\|\c
-.B \-fnonnull\-objects\c
-\&\|' to omit the checks for null, if your program doesn't require the
-default checking.
-.TP
-.B \-fhandle\-signatures
-.TP
-.B \-fno\-handle\-signatures
-These options control the recognition of the \c
-.B signature\c
-\& and \c
-.B sigof\c
-\& constructs for specifying abstract types. By default, these
-constructs are not recognized.
-.TP
-.B \-fthis\-is\-variable
-The incorporation of user-defined free store management into C++ has
-made assignment to \c
-.B this\c
-\& an anachronism. Therefore, by default GNU
-C++ treats the type of \c
-.B this\c
-\& in a member function of \c
-.B class X\c
-\&
-to be \c
-.B X *const\c
-\&. In other words, it is illegal to assign to
-\c
-.B this\c
-\& within a class member function. However, for backwards
-compatibility, you can invoke the old behavior by using
-\&`\|\c
-.B \-fthis\-is\-variable\c
-\&\|'.
-.TP
-.B \-g
-Produce debugging information in the operating system's native format
-(for DBX or SDB or DWARF). GDB also can work with this debugging
-information. On most systems that use DBX format, `\|\c
-.B \-g\c
-\&\|' enables use
-of extra debugging information that only GDB can use.
-
-Unlike most other C compilers, GNU CC allows you to use `\|\c
-.B \-g\c
-\&\|' with
-`\|\c
-.B \-O\c
-\&\|'. The shortcuts taken by optimized code may occasionally
-produce surprising results: some variables you declared may not exist
-at all; flow of control may briefly move where you did not expect it;
-some statements may not be executed because they compute constant
-results or their values were already at hand; some statements may
-execute in different places because they were moved out of loops.
-
-Nevertheless it proves possible to debug optimized output. This makes
-it reasonable to use the optimizer for programs that might have bugs.
-.TP
-.BI "\-I" "dir"\c
-\&
-Append directory \c
-.I dir\c
-\& to the list of directories searched for include files.
-.TP
-.BI "\-L" "dir"\c
-\&
-Add directory \c
-.I dir\c
-\& to the list of directories to be searched
-for `\|\c
-.B \-l\c
-\&\|'.
-.TP
-.BI \-l library\c
-\&
-Use the library named \c
-.I library\c
-\& when linking. (C++ programs often require `\|\c
-\-lg++\c
-\&\|' for successful linking.)
-.TP
-.B \-nostdinc
-Do not search the standard system directories for header files. Only
-the directories you have specified with
-.B \-I
-options (and the current directory, if appropriate) are searched.
-.TP
-.B \-nostdinc++
-Do not search for header files in the standard directories specific to
-C++, but do still search the other standard directories. (This option
-is used when building libg++.)
-.TP
-.B \-O
-Optimize. Optimizing compilation takes somewhat more time, and a lot
-more memory for a large function.
-.TP
-.BI "\-o " file\c
-\&
-Place output in file \c
-.I file\c
-\&.
-.TP
-.B \-S
-Stop after the stage of compilation proper; do not assemble. The output
-is an assembler code file for each non-assembler input
-file specified.
-.TP
-.B \-traditional
-Attempt to support some aspects of traditional C compilers.
-
-Specifically, for both C and C++ programs:
-.TP
-\ \ \ \(bu
-In the preprocessor, comments convert to nothing at all, rather than
-to a space. This allows traditional token concatenation.
-.TP
-\ \ \ \(bu
-In the preprocessor, macro arguments are recognized within string
-constants in a macro definition (and their values are stringified,
-though without additional quote marks, when they appear in such a
-context). The preprocessor always considers a string constant to end
-at a newline.
-.TP
-\ \ \ \(bu
-The preprocessor does not predefine the macro \c
-.B __STDC__\c
-\& when you use
-`\|\c
-.B \-traditional\c
-\&\|', but still predefines\c
-.B __GNUC__\c
-\& (since the GNU extensions indicated by
-.B __GNUC__\c
-\& are not affected by
-`\|\c
-.B \-traditional\c
-\&\|'). If you need to write header files that work
-differently depending on whether `\|\c
-.B \-traditional\c
-\&\|' is in use, by
-testing both of these predefined macros you can distinguish four
-situations: GNU C, traditional GNU C, other ANSI C compilers, and
-other old C compilers.
-.PP
-.TP
-\ \ \ \(bu
-String ``constants'' are not necessarily constant; they are stored in
-writable space, and identical looking constants are allocated
-separately.
-
-For C++ programs only (not C), `\|\c
-.B \-traditional\c
-\&\|' has one additional effect: assignment to
-.B this
-is permitted. This is the same as the effect of `\|\c
-.B \-fthis\-is\-variable\c
-\&\|'.
-.TP
-.BI \-U macro
-Undefine macro \c
-.I macro\c
-\&.
-.TP
-.B \-Wall
-Issue warnings for conditions which pertain to usage that we recommend
-avoiding and that we believe is easy to avoid, even in conjunction
-with macros.
-.TP
-.B \-Wenum\-clash
-Warn when converting between different enumeration types.
-.TP
-.B \-Woverloaded\-virtual
-In a derived class, the definitions of virtual functions must match
-the type signature of a virtual function declared in the base class.
-Use this option to request warnings when a derived class declares a
-function that may be an erroneous attempt to define a virtual
-function: that is, warn when a function with the same name as a
-virtual function in the base class, but with a type signature that
-doesn't match any virtual functions from the base class.
-.TP
-.B \-Wtemplate\-debugging
-When using templates in a C++ program, warn if debugging is not yet
-fully available.
-.TP
-.B \-w
-Inhibit all warning messages.
-.TP
-.BI +e N
-Control how virtual function definitions are used, in a fashion
-compatible with
-.B cfront
-1.x.
-.PP
-
-.SH PRAGMAS
-Two `\|\c
-.B #pragma\c
-\&\|' directives are supported for GNU C++, to permit using the same
-header file for two purposes: as a definition of interfaces to a given
-object class, and as the full definition of the contents of that object class.
-.TP
-.B #pragma interface
-Use this directive in header files that define object classes, to save
-space in most of the object files that use those classes. Normally,
-local copies of certain information (backup copies of inline member
-functions, debugging information, and the internal tables that
-implement virtual functions) must be kept in each object file that
-includes class definitions. You can use this pragma to avoid such
-duplication. When a header file containing `\|\c
-.B #pragma interface\c
-\&\|' is included in a compilation, this auxiliary information
-will not be generated (unless the main input source file itself uses
-`\|\c
-.B #pragma implementation\c
-\&\|'). Instead, the object files will contain references to be
-resolved at link time.
-.tr !"
-.TP
-.B #pragma implementation
-.TP
-.BI "#pragma implementation !" objects .h!
-Use this pragma in a main input file, when you want full output from
-included header files to be generated (and made globally visible).
-The included header file, in turn, should use `\|\c
-.B #pragma interface\c
-\&\|'.
-Backup copies of inline member functions, debugging information, and
-the internal tables used to implement virtual functions are all
-generated in implementation files.
-
-If you use `\|\c
-.B #pragma implementation\c
-\&\|' with no argument, it applies to an include file with the same
-basename as your source file; for example, in `\|\c
-.B allclass.cc\c
-\&\|', `\|\c
-.B #pragma implementation\c
-\&\|' by itself is equivalent to `\|\c
-.B
-#pragma implementation "allclass.h"\c
-\&\|'. Use the string argument if you want a single implementation
-file to include code from multiple header files.
-
-There is no way to split up the contents of a single header file into
-multiple implementation files.
-.SH FILES
-.ta \w'LIBDIR/g++\-include 'u
-file.h C header (preprocessor) file
-.br
-file.i preprocessed C source file
-.br
-file.C C++ source file
-.br
-file.cc C++ source file
-.br
-file.cxx C++ source file
-.br
-file.s assembly language file
-.br
-file.o object file
-.br
-a.out link edited output
-.br
-\fITMPDIR\fR/cc\(** temporary files
-.br
-\fILIBDIR\fR/cpp preprocessor
-.br
-\fILIBDIR\fR/cc1plus compiler
-.br
-\fILIBDIR\fR/collect linker front end needed on some machines
-.br
-\fILIBDIR\fR/libgcc.a GCC subroutine library
-.br
-/lib/crt[01n].o start-up routine
-.br
-\fILIBDIR\fR/ccrt0 additional start-up routine for C++
-.br
-/lib/libc.a standard C library, see
-.IR intro (3)
-.br
-/usr/include standard directory for
-.B #include
-files
-.br
-\fILIBDIR\fR/include standard gcc directory for
-.B #include
-files
-.br
-\fILIBDIR\fR/g++\-include additional g++ directory for
-.B #include
-.sp
-.I LIBDIR
-is usually
-.B /usr/local/lib/\c
-.IR machine / version .
-.br
-.I TMPDIR
-comes from the environment variable
-.B TMPDIR
-(default
-.B /usr/tmp
-if available, else
-.B /tmp\c
-\&).
-.SH "SEE ALSO"
-gcc(1), cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
-.br
-.RB "`\|" gcc "\|', `\|" cpp \|',
-.RB `\| as \|', `\| ld \|',
-and
-.RB `\| gdb \|'
-entries in
-.B info\c
-\&.
-.br
-.I
-Using and Porting GNU CC (for version 2.0)\c
-, Richard M. Stallman;
-.I
-The C Preprocessor\c
-, Richard M. Stallman;
-.I
-Debugging with GDB: the GNU Source-Level Debugger\c
-, Richard M. Stallman and Roland H. Pesch;
-.I
-Using as: the GNU Assembler\c
-, Dean Elsner, Jay Fenlason & friends;
-.I
-gld: the GNU linker\c
-, Steve Chamberlain and Roland Pesch.
-
-.SH BUGS
-For instructions on how to report bugs, see the GCC manual.
-
-.SH COPYING
-Copyright (c) 1991, 1992, 1993 Free Software Foundation, Inc.
-.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-.SH AUTHORS
-See the GNU CC Manual for the contributors to GNU CC.
+.so man1/gcc.1
OpenPOWER on IntegriCloud