.\" Automatically generated by Pod::Man version 1.1
-.\" Mon Feb 19 19:32:03 2001
+.\" Fri Mar 9 21:54:51 2001
.\"
.\" Standard preamble:
.\" ======================================================================
.\" ======================================================================
.\"
.IX Title "GCC 1"
-.TH GCC 1 "gcc-3.1" "2001-02-19" "GNU"
+.TH GCC 1 "gcc-3.1" "2001-03-09" "GNU"
.UC
.SH "NAME"
gcc \- \s-1GNU\s0 project C and \*(C+ compiler
\&\-finline-functions \-finline-limit=\fR\fIn\fR \fB\-fkeep-inline-functions
\&\-fkeep-static-consts \-fmove-all-movables
\&\-fno-default-inline \-fno-defer-pop
-\&\-fno-function-cse \-fno-guess-branch-probability
+\&\-fno-function-cse \-fno-guess-branch-probability
\&\-fno-inline \-fno-math-errno \-fno-peephole
+\&\-funsafe-math-optimizations \-fno-trapping-math
\&\-fomit-frame-pointer \-foptimize-register-move
\&\-foptimize-sibling-calls \-freduce-all-givs
\&\-fregmove \-frename-registers
performed when this option is not used.
.Ip "\fB\-ffast-math\fR" 4
.IX Item "-ffast-math"
-This option allows \s-1GCC\s0 to violate some \s-1ISO\s0 or \s-1IEEE\s0 rules and/or
-specifications in the interest of optimizing code for speed. For
-example, it allows the compiler to assume arguments to the \f(CW\*(C`sqrt\*(C'\fR
-function are non-negative numbers and that no floating-point values
-are NaNs.
+Sets \fB\-fno-math-errno\fR, \fB\-funsafe-math-optimizations\fR,
+and \fB\-fno-trapping-math\fR.
+.Sp
+This option causes the preprocessor macro _\|_FAST_MATH_\|_ to be defined.
+.Sp
+This option causes the preprocessor macro _\|_FAST_MATH_\|_ to be defined.
.Sp
This option should never be turned on by any \fB\-O\fR option since
it can result in incorrect output for programs which depend on
\&\s-1IEEE\s0 exceptions for math error handling may want to use this flag
for speed while maintaining \s-1IEEE\s0 arithmetic compatibility.
.Sp
+This option should never be turned on by any \fB\-O\fR option since
+it can result in incorrect output for programs which depend on
+an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications for
+math functions.
+.Sp
The default is \fB\-fmath-errno\fR. The \fB\-ffast-math\fR option
sets \fB\-fno-math-errno\fR.
+.Ip "\fB\-funsafe-math-optimizations\fR" 4
+.IX Item "-funsafe-math-optimizations"
+Allow optimizations for floating-point arithmetic that (a) assume
+that arguments and results are valid and (b) may violate \s-1IEEE\s0 or
+\&\s-1ANSI\s0 standards.
+.Sp
+This option should never be turned on by any \fB\-O\fR option since
+it can result in incorrect output for programs which depend on
+an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications for
+math functions.
+.Sp
+The default is \fB\-fno-unsafe-math-optimizations\fR. The
+\&\fB\-ffast-math\fR option sets \fB\-funsafe-math-optimizations\fR.
+.Ip "\fB\-fno-trapping-math\fR" 4
+.IX Item "-fno-trapping-math"
+Compile code assuming that floating-point operations cannot generate
+user-visible traps. Setting this option may allow faster code
+if one relies on ``non-stop'' \s-1IEEE\s0 arithmetic, for example.
+.Sp
+This option should never be turned on by any \fB\-O\fR option since
+it can result in incorrect output for programs which depend on
+an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications for
+math functions.
+.Sp
+The default is \fB\-ftrapping-math\fR. The \fB\-ffast-math\fR
+option sets \fB\-fno-trapping-math\fR.
.PP
The following options control specific optimizations. The \fB\-O2\fR
option turns on all of these optimizations except \fB\-funroll-loops\fR
Assume the defaults for the machine type \fIcpu type\fR when scheduling
instructions. The choices for \fIcpu type\fR are \fBi386\fR,
\&\fBi486\fR, \fBi586\fR, \fBi686\fR, \fBpentium\fR,
-\&\fBpentiumpro\fR, \fBk6\fR, and \fBathlon\fR
+\&\fBpentiumpro\fR, \fBpentium4\fR, \fBk6\fR, and \fBathlon\fR
.Sp
While picking a specific \fIcpu type\fR will schedule things appropriately
for that particular chip, the compiler will not generate any code that
does not run on the i386 without the \fB\-march=\fR\fIcpu type\fR option
being used. \fBi586\fR is equivalent to \fBpentium\fR and \fBi686\fR
-is equivalent to \fBpentiumpro\fR. \fBk6\fR is the \s-1AMD\s0 chip as
-opposed to the Intel ones.
+is equivalent to \fBpentiumpro\fR. \fBk6\fR and \fBathlon\fR are the
+\&\s-1AMD\s0 chips as opposed to the Intel ones.
.Ip "\fB\-march=\fR\fIcpu type\fR" 4
.IX Item "-march=cpu type"
Generate instructions for the machine type \fIcpu type\fR. The choices
\&\f(CW\*(C`sqrt\*(C'\fR instructions for the 387. Specify this option to avoid
generating those instructions. This option is the default on FreeBSD.
As of revision 2.6.1, these instructions are not generated unless you
-also use the \fB\-ffast-math\fR switch.
+also use the \fB\-funsafe-math-optimizations\fR switch.
.Ip "\fB\-malign-double\fR" 4
.IX Item "-malign-double"
.PD 0