+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
@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.
-
-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
+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.
+
+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