re PR middle-end/39701 (Revision 145846 caused many test failures)

2009-04-10  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/39701
	* doc/invoke.texi (Optimization Options): Document change in
	meaning and initialization of -fdelete-null-pointer-checks.

From-SVN: r145948
This commit is contained in:
Paolo Bonzini 2009-04-11 00:43:33 +00:00 committed by H.J. Lu
parent 1f54468443
commit 567a90f59c
2 changed files with 19 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2009-04-10 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/39701
* doc/invoke.texi (Optimization Options): Document change in
meaning and initialization of -fdelete-null-pointer-checks.
2009-04-10 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/39701

View File

@ -5888,17 +5888,22 @@ Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
@item -fdelete-null-pointer-checks
@opindex fdelete-null-pointer-checks
Use global dataflow analysis to identify and eliminate useless checks
for null pointers. The compiler assumes that dereferencing a null
pointer would have halted the program. If a pointer is checked after
it has already been dereferenced, it cannot be null.
Assume that programs cannot safely dereference null pointers, and that
no code or data element resides there. This enables simple constant
folding optimizations at all optimization levels. In addition, other
optimization passes in GCC use this flag to control global dataflow
analyses that eliminate useless checks for null pointers; these assume
that if a pointer is checked after it has already been dereferenced,
it cannot be null.
In some environments, this assumption is not true, and programs can
safely dereference null pointers. Use
@option{-fno-delete-null-pointer-checks} to disable this optimization
Note however that in some environments this assumption is not true.
Use @option{-fno-delete-null-pointer-checks} to disable this optimization
for programs which depend on that behavior.
Enabled by default.
Some targets, especially embedded ones, disable this option at all levels.
Otherwise it is enabled at all levels: @option{-O0}, @option{-O1},
@option{-O2}, @option{-O3}, @option{-Os}. Passes that use the information
are enabled independently at different optimization levels.
@item -fexpensive-optimizations
@opindex fexpensive-optimizations