]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/ChangeLog
./:
[thirdparty/gcc.git] / gcc / ChangeLog
index d504109f8c6bef40951d82d2e9395ea90ac6e895..4c6f08466c6ac4233b8db461a21e175e15e07ba7 100644 (file)
@@ -1,3 +1,85 @@
+2007-02-13  Ian Lance Taylor  <iant@google.com>
+
+       * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
+       * flags.h (warn_strict_overflow): Declare.
+       (enum warn_strict_overflow_code): Define.
+       (issue_strict_overflow_warning): New static inline function.
+       * opts.c (warn_strict_overflow): New variable.
+       (common_handle_option): Handle OPT_Wstrict_overflow and
+       OPT_Wstrict_overflow_.
+       * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
+       OPT_Wall.
+       * fold-const.c: Include intl.h.
+       (fold_deferring_overflow_warnings): New static variable.
+       (fold_deferred_overflow_warning): New static variable.
+       (fold_deferred_overflow_code): New static variable.
+       (fold_defer_overflow_warnings): New function.
+       (fold_undefer_overflow_warnings): New function.
+       (fold_undefer_and_ignore_overflow_warnings): New function.
+       (fold_deferring_overflow_warnings_p): New function.
+       (fold_overflow_warning): New static function.
+       (make_range): Add strict_overflow_p parameter.  Change all
+       callers.
+       (extract_muldiv, extract_muldiv_1): Likewise.
+       (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
+       tree_expr_nonnegative_p.
+       (fold_negate_expr): Call fold_overflow_warning.
+       (fold_range_test): Likewise.
+       (fold_comparison): Likewise.
+       (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
+       instead of tree_expr_nonnegative_p.
+       (tree_expr_nonnegative_warnv_p): Rename from
+       tree_expr_nonnegative_p, add strict_overflow_p parameter.
+       (tree_expr_nonnegative_p): New function.
+       (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
+       strict_overflow_p parameter.
+       (tree_expr_nonzero_p): New function.
+       * passes.c (verify_interpass_invariants): New static function.
+       (execute_one_pass): Call it.
+       * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
+       warnings.
+       (number_of_iterations_exit, loop_niter_by_eval): Likewise.
+       (estimate_numbers_of_iterations): Likewise.
+       (scev_probably_wraps_p): Likewise.
+       * tree-ssa-ccp.c: Include "toplev.h".
+       (evaluate_stmt): Defer fold overflow warnings until we know we are
+       going to optimize.
+       (struct fold_stmt_r_data): Add stmt field.
+       (fold_stmt_r): Defer fold overflow warnings until we know we
+       optimized.
+       (fold_stmt): Initialize stmt field of fold_stmt_r_data.
+       (fold_stmt_inplace): Likewise.
+       * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
+       (cleanup_control_expr_graph): Defer fold overflow warnings until
+       we know we are going to optimize.
+       * tree-cfg.c (fold_cond_expr_cond): Likewise.
+       * tree-ssa-threadedge.c (simplify_control_stmt_condition):
+       Likewise.
+       * tree-vrp.c (vrp_expr_computes_nonnegative): Call
+       tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
+       * tree-ssa-loop-manip.c (create_iv): Likewise.
+       * c-typeck.c (build_conditional_expr): Likewise.
+       (build_binary_op): Likewise.
+       * tree-vrp.c (vrp_expr_computes_nonzero): Call
+       tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
+       (extract_range_from_unary_expr): Likewise.
+       * simplify-rtx.c (simplify_const_relational_operation): Warn when
+       assuming that signed overflow does not occur.
+       * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
+       * tree.h (tree_expr_nonnegative_warnv_p): Declare.
+       (fold_defer_overflow_warnings): Declare.
+       (fold_undefer_overflow_warnings): Declare.
+       (fold_undefer_and_ignore_overflow_warnings): Declare.
+       (fold_deferring_overflow_warnings_p): Declare.
+       (tree_expr_nonzero_warnv_p): Declare.
+       * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
+       of warning options.
+       (Warning Options): Document -Wstrict-overflow.
+       * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
+       (tree-ssa-ccp.o): Likewise.
+       (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
+       (fold-const.o): Depend on intl.h.
+
 2007-02-13  Ian Lance Taylor  <iant@google.com>
 
        PR middle-end/30751