aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
AgeCommit message (Collapse)AuthorFilesLines
2005-08-28tree-vrp.c: Remove obsolete comment in front of vrp_initialize.Andrew Pinski1-3/+1
2005-08-28 Andrew Pinski <pinskia@physics.uc.edu> * tree-vrp.c: Remove obsolete comment in front of vrp_initialize. From-SVN: r103584
2005-08-13re PR tree-optimization/22236 (wrong code for casts and scev)Sebastian Pop1-6/+8
PR tree-optimization/22236 * tree-cfg.c (print_pred_bbs, print_succ_bbs): Correctly print successors and predecessors. * tree-chrec.c (chrec_convert): Before converting, check that sequences don't wrap. * tree-data-ref.c (compute_estimated_nb_iterations): Moved ... (analyze_array): Extern. (find_data_references_in_loop): Remove call to compute_estimated_nb_iterations. * tree-data-ref.h (analyze_array): Declared. * tree-flow-inline.h (single_ssa_tree_operand, single_ssa_use_operand, single_ssa_def_operand, zero_ssa_operands): Fix documentation. * tree-flow.h (scev_probably_wraps_p): Declare with an extra parameter. * tree-scalar-evolution.c (instantiate_parameters_1): Factor entry condition. * tree-ssa-loop-ivcanon.c: Fix documentation. * tree-ssa-loop-ivopts.c (idx_find_step): Add a fixme note. * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): ... here. (infer_loop_bounds_from_undefined): New. (estimate_numbers_of_iterations_loop): Use infer_loop_bounds_from_undefined. (used_in_pointer_arithmetic_p): New. (scev_probably_wraps_p): Pass an extra parameter. Call used_in_pointer_arithmetic_p. Check that AT_STMT is not null. (convert_step): Fix documentation. * tree-vrp.c (adjust_range_with_scev): Call instantiate_parameters. Use initial_condition_in_loop_num and evolution_part_in_loop_num instead of CHREC_LEFT and CHREC_RIGHT. Adjust the call to scev_probably_wraps_p. From-SVN: r103055
2005-08-08tree-vrp.c (simplify_div_or_mod_using_range): Use build2.James A. Morrison1-3/+3
2005-08-07 James A. Morrison <phython@gcc.gnu.org> * tree-vrp.c (simplify_div_or_mod_using_range): Use build2. (test_for_singularity): Use fold_build2. From-SVN: r102844
2005-08-06Makefile.in, [...]: Fix comment/doc typos.Kazu Hirata1-1/+1
* Makefile.in, cfgexpand.c, cfgloop.h, cfgloopmanip.c, config.gcc, ipa-cp.c, ipa-prop.c, ipa-prop.h, reg-stack.c, tree-ssa-structalias.c, tree-vrp.c, value-prof.c, vec.h, config/linux.h, config/alpha/alpha.h, config/alpha/linux.h, config/alpha/predicates.md, config/arc/arc.h, config/arm/arm.h, config/arm/ieee754-df.S, config/arm/ieee754-sf.S, config/bfin/bfin.c, config/bfin/bfin.h, config/c4x/c4x.h, config/crx/crx.c, config/fr30/fr30.h, config/frv/frv.h, config/h8300/h8300.h, config/i386/i386.h, config/ia64/ia64.c, config/ia64/ia64.h, config/m68hc11/m68hc11.h, config/mips/mips.c, config/mips/mips.h, config/mips/openbsd.h, config/mn10300/mn10300.h, config/pa/pa.c, config/pa/pa.h, config/pdp11/pdp11.h, config/rs6000/linux-unwind.h, config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/s390/s390.c, config/sh/sh.c, config/sh/sh.h, config/sparc/linux.h, config/sparc/linux64.h, config/sparc/sparc.h, config/v850/v850.h, config/vax/vax.h, doc/extend.texi, doc/gcov.texi, doc/install.texi, doc/invoke.texi, doc/rtl.texi, doc/tm.texi: Fix comment/doc typos. Follow spelling conventions. From-SVN: r102809
2005-08-06re PR tree-optimization/23128 (VRP fails for unsigned values)James A. Morrison1-3/+16
2005-08-05 James A. Morrison <phython@gcc.gnu.org> PR tree-optimization/23128 * tree-vrp.c (vrp_int_const_binop): Check if unsigned addition or subtraction wrap, and set TREE_OVERFLOW if they do. From-SVN: r102800
2005-08-02re PR tree-optimization/23129 (VRP propagates division of antiranges ↵James A. Morrison1-1/+2
incorrectly) 2005-08-02 James A. Morrison <phython@gcc.gnu.org> PR tree-optimization/23129 * tree-vrp.c (extract_range_from_binary_expr): Set value range to varying for divisions with anti-ranges. From-SVN: r102653
2005-07-29tree-vrp.c (compare_range_with_value): Return true or false for ~[VAL_1...James A. Morrison1-3/+2
2005-07-29 James A. Morrison <phython@gcc.gnu.org> * tree-vrp.c (compare_range_with_value): Return true or false for ~[VAL_1, VAL_2] OP VAL if VAL_1 <= VAL <= VAL_2 for NE_EXPR and EQ_EXPR respectively. From-SVN: r102558
2005-07-28builtins.c: Fix comment typo(s).Volker Reichelt1-1/+1
* builtins.c: Fix comment typo(s). * genautomata.c: Likewise. * gimplify.c: Likewise. * tree-dfa.c: Likewise. * tree-flow-inline.h: Likewise. * tree-into-ssa.c: Likewise. * tree-ssa-alias.c: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-copy.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-ssa-operands.c: Likewise. * tree-tailcall.c: Likewise. * tree-vectorizer.c: Likewise. * tree-vrp.c: Likewise. * tree.c: Likewise. From-SVN: r102491
2005-07-28tree-vrp.c (test_for_singularity): Extracted from ...Jeff Law1-40/+98
* tree-vrp.c (test_for_singularity): Extracted from ... (simplify_cond_using_ranges): Attempt to simplify a relational test to NE_EXPR. Dump information when a COND_EXPR is simplified. * gcc.dg/tree-ssa/vrp17.c: Update expected output. * gcc.dg/tree-ssa/vrp18.c: New test. From-SVN: r102489
2005-07-28re PR tree-optimization/22493 (with -fwrapv -INT_MIN is still not positive)James A. Morrison1-20/+70
2005-07-27 James A. Morrison <phython@gcc.gnu.org> PR tree-optimization/22493 * tree-vrp.c (extract_range_from_unary_expr): Deal with -fwrapv and VR_ANTI_RANGEs properly for NEGATE_EXPRs and ABS_EXPRs. From-SVN: r102458
2005-07-27tree-vrp.c (vrp_meet): Intersect the equivalency sets when meeting a ↵Jeff Law1-0/+11
VR_ANTI_RANGE with a VR_RANGE. * tree-vrp.c (vrp_meet): Intersect the equivalency sets when meeting a VR_ANTI_RANGE with a VR_RANGE. When intersecting equivalency sets, correctly handle the case were vr0 has an equivalency set, but vr1 does not. * gcc.c-torture/execute/pr22630.c: New test. From-SVN: r102432
2005-07-20tree.h (tree_expr_nonzero_p): Export.James A. Morrison1-33/+3
2005-07-20 James A. Morrison <phython@gcc.gnu.org> * tree.h (tree_expr_nonzero_p): Export. * fold-const.c (tree_expr_nonzero_p): Likewise. Return true for CALL_EXPRs that are alloca calls. (fold_binary): Use omit_one_operand when checking EQ_EXPRs or NE_EXPRs against zero. * tree-flow.h (expr_computes_nonzero): Remove. * tree-vrp.c (expr_computes_nonzero): Remove. (vrp_expr_computes_nonzero): Use tree_expr_nonzero_p. (extract_range_from_unary_expr): Likewise. * tree-ssa-dom.c (record_equivalences_from_stmt): Use tree_expr_nonzero_p. From-SVN: r102201
2005-07-14re PR tree-optimization/22230 (value range propagation error)Steven Bosscher1-1/+1
PR tree-optimization/22230 gcc/ * tree-vrp.c (extract_range_from_binary_expr): Fix logics thinko in the computation of the four cross productions for "range op range". testsuite/ * gcc.dg/tree-ssa/pr22230.c: New test. From-SVN: r102038
2005-07-13tree-dfa.c (dump_variable): Use default_def function.Jan Hubicka1-1/+1
* tree-dfa.c (dump_variable): Use default_def function. * tree-ssa-alias.c (dump_points_to_info): Likewise. * tree-ssa.c (verify_use): Likewise. * tree-ssanames.c (release_ssa_name): Likewise. * tree-tailcall.c (eliminate_tail_call): Likewise. (tree_optimize_tail_calls_1): Likewise. * tree-vrp.c (get_value_range): Likewise. From-SVN: r101994
2005-07-08Makefile.in (TREE_H): Add treestruct.def.Daniel Berlin1-1/+1
2005-07-08 Daniel Berlin <dberlin@dberlin.org> * Makefile.in (TREE_H): Add treestruct.def. (c-decl.o): Add pointer-set.h * c-decl.c (diagnose_mismatched_decls): Don't attempt to look at visibility on regular DECL's. (merge_decls): Fix the copying of decl nodes of various types for the new structures. Don't update RTL, section name, weak status, etc, on DECL's without RTL. (grokdeclarator): DECL_ARG_TYPE_AS_WRITTEN is gone. Don't check volatile on non-variable types. (store_parm_decls_oldstyle): Use pointer_set instead of DECL_WEAK to check whether we have seen arguments. * c-objc-common.c (c_tree_printer): Reverse order of tests so that flag is checked before field (flag is common, field is not). * dwarf2out.c (decl_ultimate_origin): Only DECL's with TS_DECL_COMMON could have an origin. (add_location_or_const_value_attribute): Don't check section name on non-var/function decls. (dwarf2out_var_location): Reverse order of tests. * emit-rtl.c (set_reg_attrs_for_parm): DECL_CHECK is dead, replace with DECL_WRTL_CHECK. * expmed.c (make_tree): rtl is now in decl_with_rtl. * fold-const.c (fold_binary): Don't check weakness on non-var/function decls. (tree_expr_nonzero_p): Ditto. (fold_checksum_tree): Use tree_decl_extra as sizeof buffer. * ggc-page.c (extra_order_size_table): Add sizes for tree_decl_non_common, tree_parm_decl, tree_var_decl, and tree_field_decl. * gimplify.c (gimplify_bind_expr): Only set DECL_SEEN_IN_BIND_EXPR_P on VAR_DECL. * integrate.c (copy_decl_for_inlining): Don't set RTL on decl's without RTL. * langhooks-def.h (LANG_HOOK_INIT_TS): New. * langhooks.h (init_ts). New langhook. * passes.c (rest_of_decl_compilation): Reverse order of tests. * print-tree.c (print_node): Update to only print fields that exist in the structures the passed decl has. * toplev.c (wrapup_global_declarations): Don't reset DECL_DEFER_OUTPUT on DECL's that don't contain it. * tree-browser.c (browse_tree): DECL_ARG_TYPE_AS_WRITTEN removed. * tree-inline.c (remap_decl): Ditto. * tree-outof-ssa.c (create_temp): Reverse order of tests. * tree-pretty-print.c (print_declaration): Don't print DECL_REGISTER on things that don't contain it. * tree-vrp.c (expr_computes_nonzero): Don't check weakness on non-var/function decls. * tree.c (tree_contains_struct): New structure. (init_priority_for_decl): New hashtable. (tree_int_map): New structure. (tree_int_map_eq): New function. (tree_int_map_marked_p): Ditto. (tree_int_map_hash): Ditto. (tree_map): Move to tree.h. (tree_map_eq): Externalize. (tree_map_hash): Ditto. (tree_map_marked_p): Ditto. (init_ttree): Set up tree_contains_struct and call langhook. (decl_assembler_name): Use DECL_NON_COMMON_CHECK.. (tree_code_size): Update for new structures. (tree_node_structure): Update for new structures. (make_node_stat): Don't try to set DECL_IN_SYSTEM_HEADER on decls without the field. (copy_node_stat): Copy init priority. (build_decl_stat): Ditto for visibility. (ts_enum_names): New. (tree_contains_struct_check_failed): New function. (decl_init_priority_lookup): Ditto. (decl_init_priority_insert): Ditto. * treestruct.def: New file. * tree.h (CODE_CONTAINS_STRUCT): New macro. (CONTAINS_STRUCT_CHECK): Ditto. (tree_contains_struct_check_failed): New prototype. (DECL_CHECK): Removed. (DECL_MINIMAL_CHECK): New. (DECL_COMMON_CHECK): Ditto. (DECL_WRTL_CHECK): Ditto. (DECL_NON_COMMON_CHECK): Ditto. (DECL_WITH_VIS_CHECK): Ditto. (VAR_OR_FUNCTION_DECL_P): Ditto (struct tree_decl_minimal): New structure. (struct tree_decl_common): Ditto. (struct tree_decl_with_rtl): Ditto. (struct tree_decl_with_vis): Ditto. (struct tree_decl_non_common): Ditto. (struct tree_field_decl): Ditto. (struct tree_parm_decl): Ditto. (struct tree_var_decl): Ditto. (struct tree_function_decl): Ditto. (struct tree_const_decl): Ditto. (struct tree_result_decl): Ditto. (union tree_node): Add new structures. * var-tracking.c (track_expr_p): Reverse order of tests. * doc/c-tree.texi: Add documentation on DECL node internal structure. 2005-07-08 Daniel Berlin <dberlin@dberlin.org> * utils.c (create_param_decl): DECL_ARG_TYPE_AS_WRITTEN is removed. 2005-07-08 Daniel Berlin <dberlin@dberlin.org> * Make-lang.in: Add gt-cp-lang.h. (cp-lang.o): Ditto. * class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on the field. * config-lang.in: Add cp-lang.c to gtfiles. * cp-lang.c: Include hashtab.h. (cp_init_ts): New function. (LANG_HOOK_INIT_TS): Use macro. (decl_shadowed_for_var_lookup): New function. (decl_shadowed_for_var_insert): Ditto. * cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common. (NON_THUNK_FUNCTION_CHECK): Ditto. (DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common. (DECL_INIT_PRIORITY): Ditto. (DECL_HAS_SHADOWED_FOR_VAR_P): Ditto. (DECL_SHADOWED_FOR_VAR): Use hashtable. (SET_DECL_SHADOWED_FOR_VAR): Ditto. * decl.c (duplicate_decls): Update for new/updated structures. (poplevel): Use SET_DECL_SHADOWED_FOR_VAR. * decl2.c (start_static_initialization_or_destruction): Deal with priority. * pt.c (tsubst_decl): Check TS_DECL_WRTL before doing SET_DECL_RTL. * tree.c (handle_init_priority_attribute): Handle priority. 2005-07-08 Daniel Berlin <dberlin@dberlin.org> * objc-act.c (objc_push_parm): DECL_ARG_TYPE_AS_WRITTEN is removed. * objc-act.h (KEYWORD_ARG_NAME): Use decl_non_common. (KEYWORD_KEY_NAME): Use decl_minimal. (METHOD_SEL_NAME): Ditto.. (METHOD_SEL_ARGS): Use decl_non_common. (METHOD_ADD_ARGS): Ditto. (METHOD_ADD_ARGS_ELLIPSIS_P): Use decl_common. (METHOD_DEFINITION): Ditto. (METHOD_ENCODING): Ditto. * objc-lang.c: (objc_init_ts): New function. 2005-07-08 Daniel Berlin <dberlin@dberlin.org> * trans-decl.c (create_function_arglist): DECL_ARG_TYPE_AS_WRITTEN is removed. From-SVN: r101799
2005-07-06tree-vrp.c (simplify_using_ranges): Kill.Jeff Law1-107/+185
* tree-vrp.c (simplify_using_ranges): Kill. (vrp_finalize): Remove call to simplify_using_ranges. (simplify_stmt_using_ranges): New function extracted from simplify_using_ranges. (simplify_div_or_mod_using_ranges): Likewise. (simplify_abs_using_ranges): Likewise. (simplify_cond_using_ranges): New function. * tree-flow.h (simplify_stmt_using_ranges): Prototype. * tree-ssa-propagate.c (substitute_and_fold): Call simplify_stmt_using_ranges if we have range information. * gcc.dg/tree-ssa/vrp17.c: New test. From-SVN: r101685
2005-07-03tree-vrp.c (extract_range_from_assert): Replace fold (build (...)) with ↵Kazu Hirata1-2/+2
fold_build2. * tree-vrp.c (extract_range_from_assert): Replace fold (build (...)) with fold_build2. From-SVN: r101554
2005-06-26re PR tree-optimization/22026 (ACATS FAIL C45331A fixed point wrong code ↵Kazu Hirata1-0/+42
(VRP related)) gcc/ PR tree-optimization/22026 * tree-vrp.c (extract_range_from_binary_expr): Drop to VR_VARYING if a binary expression involving VR_ANTI_RANGE is PLUS_EXPR, MINUS_EXPR, or unsigned MULT_EXPR. testsuite/ PR tree-optimization/22026 * gcc.dg/tree-ssa/pr22026.c: New. From-SVN: r101328
2005-06-25Update FSF address.Kelley Cook1-2/+2
From-SVN: r101317
2005-06-23tree-optimize.c (init_tree_optimization_passes): Move copy prop pass to run ↵Jeff Law1-3/+30
just before VRP. * tree-optimize.c (init_tree_optimization_passes): Move copy prop pass to run just before VRP. * tree-vrp.c (remove_range_assertions): Remove copies created by ASSERT_EXPR removal. * gcc.dg/tree-ssa/vrp16.c: New test. From-SVN: r101277
2005-06-23re PR tree-optimization/22117 (VRP thinks <ptr type> + <ptr type> is always ↵Kazu Hirata1-1/+8
nonnull.) gcc/ PR tree-optimization/22117 * tree-vrp.c (extract_range_from_binary_expr): Compute a correct range when adding two pointers. testsuite/ PR tree-optimization/22117 * gcc.dg/tree-ssa/pr22117.c: New. From-SVN: r101272
2005-06-21tree-vrp.c (extract_range_from_unary_expr): Handle type conversions better.Jeff Law1-0/+29
* tree-vrp.c (extract_range_from_unary_expr): Handle type conversions better. * gcc.dg/tree-ssa/vrp15.c: New test. From-SVN: r101232
2005-06-20fold-const.c (swap_tree_comparison): Add support for unordered floating ↵Roger Sayle1-44/+4
point comparisons. * fold-const.c (swap_tree_comparison): Add support for unordered floating point comparisons. * tree-vrp.c (opposite_comparison): Delete. (extract_range_from_assert): Replace calls to opposite_comparison with calls to swap_tree_comparison. (register_edge_assert_for): Likewise. (vrp_evaluate_conditional): Likewise. From-SVN: r101201
2005-06-16re PR tree-optimization/22018 (VRP miscompiles multiply)Eric Botcazou1-17/+28
PR tree-optimization/22018 * tree-vrp.c (vrp_int_const_binop): Overhaul handling of overflow. From-SVN: r101097
2005-06-15tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR when the result ↵Diego Novillo1-3/+9
overflows. * tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR when the result overflows. From-SVN: r100983
2005-06-15re PR tree-optimization/22018 (VRP miscompiles multiply)Diego Novillo1-101/+110
PR 22018 * tree-vrp.c (vrp_int_const_binop): New. (extract_range_from_binary_expr): Call it. Unify handling division and multiplication. testsuite/ChangeLog: PR 22018 * gcc.dg/tree-ssa/vrp13.c: Add multiplication tests. * gcc.dg/tree-ssa/pr22018.c: New test. From-SVN: r100978
2005-06-14tree-vrp.c (local_fold): Remove.Jeff Law1-22/+10
* tree-vrp.c (local_fold): Remove. (simplify_using_ranges): Use fold_convert, not local_fold. Tweak DIV/MOD case slightly for readability. From-SVN: r100955
2005-06-13tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): No longer simplify DIV, ↵Jeff Law1-0/+139
MOD or ABS expressions using VRP information. * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): No longer simplify DIV, MOD or ABS expressions using VRP information. Remove WALK_DATA parameter. Prototype and all callers updated. (eliminate_redundant_computations): Remove WALK_DATA parameter. Prototype and all callers updated. (optimize_stmt): WALK_DATA parameter is now unused. * tree-vrp.c (local_fold): New function. Like fold, but strips useless type conversions in the result. (simplify_using_ranges): New function, largely cribbed from tree-ssa-dom.c::simplify_rhs_and_lookup_avail_expr. (vrp_finalize): Call simplify_using_ranges. * gcc.dg/tree-ssa/20030807-10.c: VRP is now expected to perform the desired transformations. * gcc.dg/tree-ssa/20030806-6.c: Similarly. * gcc.dg/tree-ssa/20040514-2.c: Similarly. From-SVN: r100909
2005-06-08tree-data-ref.c (compute_estimated_nb_iterations, [...]): Fixed to use ↵Sebastian Pop1-4/+1
chrec_contains_undetermined to test the values of... * tree-data-ref.c (compute_estimated_nb_iterations, analyze_array_indexes, compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine, find_data_references_in_loop): Fixed to use chrec_contains_undetermined to test the values of loop->estimated_nb_iterations. * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Compute the estimation only when loop->estimated_nb_iterations has not yet been initialized. (convert_step_widening, scev_probably_wraps_p): Add a call to estimate_numbers_of_iterations_loop. * tree-vrp.c (execute_vrp): Don't call estimate_numbers_of_iterations. From-SVN: r100749
2005-06-07Fixes PR 18403 and meta PR 21861.Sebastian Pop1-20/+13
* Makefile.in (tree-chrec.o): Depend on CFGLOOP_H and TREE_FLOW_H. * tree-chrec.c: Include cfgloop.h and tree-flow.h. (evolution_function_is_invariant_rec_p, evolution_function_is_invariant_p): New. (chrec_convert): Use an extra parameter AT_STMT for refining the information that is passed down to convert_step. Integrate the code that was in count_ev_in_wider_type. * tree-chrec.h (count_ev_in_wider_type): Removed. (chrec_convert): Modify its declaration. (evolution_function_is_invariant_p): Declared. (evolution_function_is_affine_p): Use evolution_function_is_invariant_p. * tree-flow.h (can_count_iv_in_wider_type): Renamed convert_step. (scev_probably_wraps_p): Declared. * tree-scalar-evolution.c (count_ev_in_wider_type): Removed. (follow_ssa_edge_in_rhs, interpret_rhs_modify_expr): Use an extra parameter AT_STMT for refining the information that is passed down to convert_step. (follow_ssa_edge_inner_loop_phi, follow_ssa_edge, analyze_scalar_evolution_1): Initialize AT_STMT with the current analyzed statement. (instantiate_parameters_1): Don't know yet how to initialize AT_STMT. * tree-ssa-loop-ivopts.c (idx_find_step): Update the use of can_count_iv_in_wider_type to use convert_step. * tree-ssa-loop-niter.c (can_count_iv_in_wider_type_bound): Move code that is independent of the loop over the known iteration bounds to convert_step_widening, the rest is moved to proved_non_wrapping_p. (scev_probably_wraps_p): New. (can_count_iv_in_wider_type): Renamed convert_step. * tree-vrp.c (adjust_range_with_scev): Take an extra AT_STMT parameter. Use scev_probably_wraps_p for computing init_is_max. (vrp_visit_assignment): Pass the current analyzed statement to adjust_range_with_scev. (execute_vrp): Call estimate_numbers_of_iterations for refining the information provided by scev analyzer. testsuite: * testsuite/gcc.dg/vect/vect-77.c: Remove xfail from lp64. * testsuite/gcc.dg/vect/vect-78.c: Same. From-SVN: r100718
2005-06-03tree-ssa-dom.c (record_edge_info): Use last_basic_block to allocate info array.Diego Novillo1-4/+10
* tree-ssa-dom.c (record_edge_info): Use last_basic_block to allocate info array. * tree-vrp.c (extract_range_from_unary_expr): Set resulting range to varying in cast expressions that change TYPE_PRECISION. testsuite/ChangeLog * gcc.dg/tree-ssa/vrp14.c: New test. From-SVN: r100554
2005-06-02tree-vrp.c, [...]: Fix comment typos.Kazu Hirata1-6/+6
* tree-vrp.c, config/arm/arm.md, config/arm/arm1020e.md, config/rs6000/rs6000.md: Fix comment typos. Follow splling conventions. * doc/install.texi: Fix a typo. From-SVN: r100516
2005-06-02re PR tree-optimization/21582 ((optimisation) VRP pass could/should use ↵Diego Novillo1-1/+55
non-null function attribute) PR 21582 * tree-vrp.c (nonnull_arg_p): New. (get_value_range): Call it. testsuite/ChangeLog PR 21582 * gcc.dg/tree-ssa/pr21582.c: New test. From-SVN: r100505
2005-06-02* tree-vrp.c (has_assert_expr, maybe_add_assert_expr): Remove.Diego Novillo1-289/+0
From-SVN: r100492
2005-06-01[multiple changes]Diego Novillo1-418/+1788
2005-06-01 Diego Novillo <dnovillo@redhat.com> PR 14341, PR 21332, PR 20701, PR 21029, PR 21086, PR 21090 PR 21289, PR 21348, PR 21367, PR 21368, PR 21458. * fold-const.c (invert_tree_comparison): Make extern. * tree-flow.h (enum value_range_type): Move to tree-ssa-propagate. (struct value_range_def): Limewise. (get_value_range): Remove. (dump_value_range): Remove. (dump_all_value_ranges): Remove. (debug_all_value_ranges): Remove. (vrp_evaluate_conditional): Declare. * tree-ssa-propagate.c (struct prop_stats_d): Add field num_pred_folded. (substitute_and_fold): Add argument use_ranges_p. Update all callers. If use_ranges_p is true, call fold_predicate_in to fold predicates using range information. Ignore ASSERT_EXPRs. Change debugging output to only show statements that have been folded. (replace_phi_args_in): Move debugging output code from substitute and fold. (fold_predicate_in): New local function. * tree-ssa-propagate.h (enum value_range_type): Move from tree-flow.h. (struct value_range_d): Likewise. Add field 'equiv'. (value_range_t): Rename from value_range. * tree-vrp.c (found_in_subgraph): Rename from found. (get_opposite_operand): Remove. (struct assert_locus_d): Declare. (assert_locus_t): Declare. (need_assert_for): Declare. (asserts_for): Declare. (blocks_visited): Declare. (vr_value): Declare. (set_value_range): Add argument 'equiv'. Don't drop to VARYING ranges that cover all values in the type. Make deep copy of equivalence set 'equiv'. (copy_value_range): New local function. (set_value_range_to_undefined): New local function. (compare_values): Return -2 if either value has overflowed. (range_includes_zero_p): New local function. (extract_range_from_assert): Flip the predicate code if the name being asserted is on the RHS of the predicate. Avoid creating unnecessary symbolic ranges if the comparison includes another name with a known numeric range. Update the equivalnce set of the new range when asserting EQ_EXPR predicates. (extract_range_from_ssa_name): Update the equivalence set of the new range with VAR. (extract_range_from_binary_expr): Also handle TRUTH_*_EXPR. If -fwrapv is used, set the resulting range to VARYING if the operation overflows. Otherwise, use TYPE_MIN_VALUE and TYPE_MAX_VALUE to represent -INF and +INF. Fix handling of *_DIV_EXPR. (extract_range_from_unary_expr): Handle MINUS_EXPR and ABS_EXPR properly by switching the range around if necessary. (extract_range_from_comparison): New local function. (extract_range_from_expr): Call it. (adjust_range_with_scev): Do not adjust the range if using wrapping arithmetic (-fwrapv). (dump_value_range): Also show equivalence set. Show -INF and +INF for TYPE_MIN_VALUE and TYPE_MAX_VALUE. (build_assert_expr_for): Also build ASSERT_EXPR for EQ_EXPR. (infer_value_range): Change return value to bool. Add arguments 'comp_code_p' and 'val_p'. Do not attempt to infer ranges from statements that may throw. Store the comparison code in comp_code_p. Store the other operand to be used in the predicate in val_p. (dump_asserts_for): New. (debug_asserts_for): New. (dump_all_asserts): New. (debug_all_asserts): New. (register_new_assert_for): New. (register_edge_assert_for): New. (find_conditional_asserts): New. (find_assert_locations): New. (process_assert_insertions_for): New. (process_assert_insertions): New. (insert_range_assertions): Initialize found_in_subgraph, blocks_visited, need_assert_for and asserts_for. Call find_assert_locations and process_assert_insertions. (remove_range_assertions): Add more documentation. (vrp_initialize): Change return type to void. Do not try to guess if running VRP is worth it. (compare_name_with_value): New. (compare_names): New. (vrp_evaluate_conditional): Add argument 'use_equiv_p'. If use_equiv_p is true, call compare_names and compare_name_with_value to compare all the ranges for every name in the equivalence set of the predicate operands. Update all callers. (vrp_meet): Try harder not to derive a VARYING range. If two values meet, the resulting equivalence set is the intersection of the two equivalence sets. (vrp_visit_phi_node): Call copy_value_range to get the current range information of the LHS. (vrp_finalize): Create a value vector representing all the names that ended up with exactly one value in their range. Call substitute_and_fold. (execute_vrp): Document equivalence sets in ranges. * tree.h (SSA_NAME_VALUE_RANGE): Remove. (struct tree_ssa_name): Remove field value_range. (invert_tree_comparison): Declare. testsuite/ChangeLog 2005-06-01 Diego Novillo <dnovillo@redhat.com> PR 14341, PR 21332, PR 20701, PR 21086, PR 21090 PR 21289, PR 21348, PR 21367, PR 21368, PR 21458. * gcc.dg/tree-ssa/pr14341.c: New test. * gcc.dg/tree-ssa/pr14841.c: New test. * gcc.dg/tree-ssa/pr20701.c: New test. * gcc.dg/tree-ssa/pr21086.c: New test. * gcc.dg/tree-ssa/pr21090.c: New test. * gcc.dg/tree-ssa/pr21332.c: New test. * gcc.dg/tree-ssa/pr21458.c: New test. * gcc.dg/tree-ssa/pr21658.c: New test. * gcc.dg/tree-ssa/vrp01.c: New test. * gcc.dg/tree-ssa/vrp02.c: New test. * gcc.dg/tree-ssa/vrp03.c: New test. * gcc.dg/tree-ssa/vrp04.c: New test. * gcc.dg/tree-ssa/vrp05.c: New test. * gcc.dg/tree-ssa/vrp06.c: New test. * gcc.dg/tree-ssa/vrp07.c: New test. * gcc.dg/tree-ssa/vrp08.c: New test. * gcc.dg/tree-ssa/vrp09.c: New test. * gcc.dg/tree-ssa/vrp10.c: New test. * gcc.dg/tree-ssa/vrp11.c: New test. * gcc.dg/tree-ssa/vrp12.c: New test. * gcc.dg/tree-ssa/vrp13.c: New test. 2005-06-01 Alexandre Oliva <aoliva@redhat.com> PR 21029 * gcc.dg/tree-ssa/pr21029.c: New test. From-SVN: r100478
2005-05-14re PR tree-optimization/21563 (A trivial VRP opportunity missed)Kazu Hirata1-0/+3
gcc/ PR tree-optimization/21563 * tree-vrp.c (compare_value): Return boolean_false_node when SSA_NAME in "if (SSA_NAME == CST)" is strictly smaller than or strictly larger than CST. testsuite/ PR tree-optimization/21563 * gcc.dg/tree-ssa/pr21563.c: New. From-SVN: r99705
2005-05-03lambda-code.c (gcc_loop_to_lambda_loop, [...]): Use generic operand interface.Andrew MacLeod1-10/+8
2005-05-03 Andrew MacLeod <amacleod@redhat.com> * lambda-code.c (gcc_loop_to_lambda_loop, lambda_loopnest_to_gcc_loopnest, phi_loop_edge_uses_def, stmt_is_bumper_for_loop, perfect_nest_p, replace_uses_of_x_with_y): Use generic operand interface. * tree-data-ref.c (find_data_references_in_loop): Use generic interface. * tree-dfa.c (collect_dfa_stats_r, mark_new_vars_to_rename): Use generic operand interface. * tree-flow-inline.h (delink_imm_use, link_imm_use_to_list, link_imm_use, link_imm_use_stmt, relink_imm_use, relink_imm_use_stmt, next_safe_imm_use, has_zero_uses, has_single_use, single_imm_use, num_imm_uses): Use ssa_use_operand_t. (get_def_ops, get_use_ops, get_v_may_def_ops, get_vuse_ops, get_v_must_def_ops): Delete. (get_def_from_ptr, get_phi_result_ptr): Get def directly now. (get_use_op_ptr, get_def_op_ptr, get_v_may_def_result_ptr, get_v_may_def_op_ptr, get_vuse_op_ptr, get_v_must_def_result_ptr, get_v_must_def_kill_ptr): Delete. (delink_stmt_imm_use): Move and use new operand interface. (op_iter_next_use, op_iter_next_def, op_iter_next_tree, op_iter_init, op_iter_next_tree): Use new operand implementation. (clear_and_done_ssa_iter): New. Initialize a blank operand iterator. (op_iter_init_use, op_iter_init_def, op_iter_init_tree): Add iterator type check. (op_iter_next_mustdef, op_iter_next_maydef, op_iter_next_must_and_may_def): Delete. Replace with... (op_iter_next_maymustdef): New. Combine must and may next operations. (op_iter_init_maydef, op_iter_init_mustdef, op_iter_init_must_and_may_def): Use new interface. (single_ssa_tree_operand ): New. Process single operands only as trees. (single_ssa_use_operand): New. Process single operands only as uses. (single_ssa_def_operand): New. Process single operands only as defs. (zero_ssa_operands): New. Return TRUE if there are zero operands of the specified types. (num_ssa_operands): New. Count the number of specified operands. (compare_ssa_operands_equal): New. Compare two statements' operands. (single_phi_def): New. Return true if PHI has one def of the specified operand type. (op_iter_init_phiuse): New. Initialize the iterator for PHI arguments. (op_iter_init_phidef): New. Initialize the iterator for the PHI def. * tree-flow.h (struct immediate_use_iterator_d): Use ssa_use_operand_t. (struct stmt_ann_d): Operands field no longer require GTY(). (vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Change prototype. * tree-into-ssa.c (mark_def_sites): Use SSA_OP_VMUSTKILL. * tree-outof-ssa.c (check_replaceable, find_replaceable_in_bb, dump_replaceable_exprs, rewrite_trees): Use generic interface. * tree-phinodes.c (make_phi_node, release_phi_node, resize_phi_node): Use use_operand_p instead of ssa_imm_use_t *. * tree-pretty-print.c (dump_vops): check if operands are active before dumping virtual operands. * tree-sra.c (sra_walk_function): Use ZERO_SSA_OPERANDS. * tree-ssa-ccp.c (likely_value): Use ZERO_SSA_OPERANDS. (ccp_fold): Use new interface. (ccp_visit_stmt): Remove unused variables and code. (convert_to_gimple_builtin): Insert statements before calling mark_new_vars_to_rename. * tree-ssa-copy.c (stmt_may_generate_copy): Use ZERO_SSA_OPERANDS. (copy_prop_visit_cond_stmt): Use generic interface. * tree-ssa-dom.c (struct expr_hash_elt): Use stmt pointer, not the annotation in table. (thread_across_edge): Use generic interface. (initialize_hash_element): Initialzie with stmt, not annotation. (eliminate_redundant_computations): Use generic interface. (record_equivalences_from_stmt): Pass stmt, not annotation. (avail_expr_hash, real_avail_expr_hash, avail_expr_eq): Use generic interface. * tree-ssa-dse.c (dse_optimize_stmt): Use ZERO_SSA_OPERANDS. * tree-ssa-loop-ivopts.c (find_invariants_stmt, find_interesting_uses_stmt, protect_loop_closed_ssa_form_use): Use generic operand interface. * tree-ssa-loop-niter.c (chain_of_csts_start, get_val_for): Use generic interface. * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Use Generic operand Interface. * tree-ssa-operands.c (struct opbuild_list_d): New. Operand build type. (build_defs, build_uses, build_v_may_defs, build_vuses, build_v_must_defs): Change type to struct opbuild_list_d. (ops_active): New. Operands active boolean. (operand_memory, operand_memory_index): New. Operand memory managers. (allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype, allocate_vuse_optype, allocate_v_must_def_optype): Delete. (free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs): Change from functions to static variable list heads. (opbuild_initialize_virtual): New. Initialize a virtual build list. (opbuild_initialize_real): New. Initialize a virtual build list. (opbuild_free): New. Free a build list. (opbuild_num_elems): New. Number of items in a list. (opbuild_append_real): New. Add a real (tree *) operand. (opbuild_append_virtual): New. Add and sort a virtual (tree) operand. (opbuild_first): New. Return first element index in a list. (opbuild_next): New. Return next element in a list. (opbuild_elem_real): New. Return real element. (opbuild_elem_virtual): New. Return virtual element. (opbuild_elem_uid): New. Return UID of virtual element. (opbuild_clear): New. Reset an operand list. (opbuild_remove_elem): New. Remove an element form a list. (ssa_operands_active): New. Return true if operand cache is active. (init_ssa_operands, fini_ssa_operands): Initialize new implementation. (ssa_operand_alloc): New. Allocate memory from an operand chunk. (correct_use_link): Use use_operand_p. (finalize_ssa_uses, finalize_ssa_v_may_defs, finalize_ssa_defs, finalize_ssa_vuses, finalize_ssa_v_must_defs): New implmentation. (cleanup_v_may_defs): Use new implmentation. (finalize_ssa_stmt_operands, start_ssa_stmt_operands): New implementation. (append_def, append_use, append_v_may_def, append_vuse, append_v_must_def): Call opbuild_append routine instead of using varray. (build_ssa_operands): Simplify to simply use stmt, don't maintain a global parse_old_ops variable. (free_ssa_operands): New implementation. (update_stmt_operands): Move. Change argument to build_ssa_operands. (copy_virtual_operands): Move. New generic implementation. (create_ssa_artficial_load_stmt): Move. New implementation. (swap_tree_operands): Update for new implementation. (get_expr_operands): Add stmt parameter to calls to swap_tree_operands. (add_call_clobber_ops, add_call_read_ops): Initialize opbuild list rather than a varray. (verify_imm_links): Use use_operand_p. (dump_immediate_uses_for): If the immediate use variable is a virtual variable, show the virtual ops in the stmt. * tree-ssa-operands.h (def_operand_p): No longer a structure. (NULL_DEF_OPERAND_P): Now a #define. (def_optype_d, use_optype_d, v_def_use_operand_type, v_may_def_optype_d, vuse_operand_type, vuse_optype_d, v_must_def_optype_d): Delete. (def_optype_d, use_optype_d, maydef_optype_d, vuse_optype_d, mustdef_optype_d): New. Use Linked list representation. (SSA_OPERAND_MEMORY_SIZE): New. Size of operand memory chunk. (struct ssa_operand_memory_d): New. Allocated Chunk node. (struct stmt_operands_d): Change to new pointers that are not GTY. (STMT_USE_OPS, NUM_USES, SET_USE_OP, STMT_DEF_OPS, NUM_DEFS, SET_DEF_OP, STMT_V_MAY_DEF_OPS, NUM_V_MAY_DEFS, SET_V_MAY_DEF_RESULT, SET_V_MAY_DEF_OP, STMT_VUSE_OPS, NUM_VUSES, SET_VUSE_OP, STMT_V_MUST_DEF_OPS, NUM_V_MUST_DEFS, SET_V_MUST_DEF_RESULT, SET_V_MUST_DEF_KILL): Delete. (V_MAY_DEF_OPS, V_MAY_DEF_RESULT_PTR, V_MAY_DEF_RESULT, V_MAY_DEF_OP_PTR, V_MAY_DEF_OP): Rename to MAYDEF_*. (V_MUST_DEF_OPS, V_MUST_DEF_RESULT_PTR, V_MUST_DEF_RESULT, V_MUST_DEF_KILL_PTR, V_MUST_DEF_KILL): Rename to MUSTDEF_*. (enum ssa_op_iter_type): Operand iterator typechecking values. (struct ssa_operand_iterator_d): Use linked lists of operands. (SSA_OP_VMUSTDEFKILL): Rename to SSA_OP_VMUSTKILL. (FOR_EACH_SSA_MAYDEF_OPERAND, FOR_EACH_SSA_MUSTDEF_OPERAND, FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): Use op_iter_next_maymustdef. (FOR_EACH_PHI_ARG): New. Iterate over PHI arguments. (FOR_EACH_PHI_OR_STMT_USE): New. Iterate over PHI or stmt uses. (FOR_EACH_PHI_OR_STMT_DEF): New. Iterate over PHI or stmt defs. (SINGLE_SSA_TREE_OPERAND, SINGLE_SSA_USE_OPERAND, SINGLE_SSA_DEF_OPERAND, ZERO_SSA_OPERANDS, NUM_SSA_OPERANDS): New. * tree-ssa-opfinalize.h: New. Function templates for expansion. (FINALIZE_ALLOC): Expands into alloc_def, alloc_use, alloc_maydef, alloc_vuse, and alloc_mustdef. (FINALIZE_FUNC): Expands into finalize_ssa_def_ops, finalize_ssa_use_ops, finalize_ssa_v_may_def_ops, finalize_ssa_vuse_ops, and finalize_ssa_v_must_def_ops. * tree-ssa-pre.c (add_to_sets): Pass tree to vn_add. (create_value_expr_from): Use stmt not vuse_optype as a parameter. Pass stmt around. (compute_avail): Use generic iterator interface. * tree-ssa-propagate.c (first_vdef): Use generic operand interface. (stmt_makes_single_load, stmt_makes_single_store): Use ZERO_SSA_OPERANDS. * tree-ssa-sink.c (is_hidden_global_store): Use ZERO_SSA_OPERANDS. (statement_sink_location): Use generic interface. * tree-ssa.c (verify_ssa): Use %p in fprintf. Use generic interface. (delete_tree_ssa): Don't call release_defs. Call release_ssa_name and reset the immediate use link nodes. (stmt_references_memory_p): Use ZERO_SSA_OPERANDS. * tree-ssanames.c (make_ssa_name): Use use_operand_p. * tree-tailcall.c (find_tail_calls): Use ZERO_SSA_OPERANDS. (eliminate_tail_call): Use generic operand interface. * tree-vect-analyze.c (vect_analyze_data_refs): Use ZERO_SSA_OPERANDS. (vect_mark_relevant, vect_mark_stmts_to_be_vectorized): Use generic interface. * tree-vect-transform.c (update_vuses_to_preheader): Use generic interface. * tree-vectorizer.c (rename_variables_in_bb): Use generic interface. * tree-vn.c (struct val_expr_pair_d): Cache statment pointer instead of vuse_optype. (vn_compute, val_expr_pair_hash, vn_add, vn_lookup, vn_lookup_or_add): Use statement pointer instead of vuse_optype. Use generic interface. * tree-vrp.c (maybe_add_assert_expr): Use generic interface. (stmt_interesting_for_vrp, vrp_visit_stmt): Use ZERO_SSA_OPERANDS. * tree.h (struct ssa_imm_use_d): Renamed to ssa_use_operand_d. (tree_ssa_name, phi_arg_d): Use ssa_use_operand_d. * doc/tree-ssa.texi: Update documentation for operand interface. From-SVN: r99155
2005-05-02tree-vrp.c (set_value_range_to_nonnull): Declare inline.Diego Novillo1-30/+99
* tree-vrp.c (set_value_range_to_nonnull): Declare inline. (set_value_range_to_null): Likewise. (set_value_range_to_varying): New function. Use it in all call sites that used to call set_value_range (vr, VR_VARYING, ...). (extract_range_from_assert): If the integral type has a super-type, and LIMIT is not within MIN and MAX values of that type, set the resulting range to VR_VARYING. From-SVN: r99125
2005-05-02re PR tree-optimization/21294 (Missed removal of null pointer check)Kazu Hirata1-1/+30
gcc/ PR tree-optimization/21294 * tree-vrp.c (vrp_expr_computes_nonzero): New. (extract_range_from_expr): Call vrp_expr_computes_nonzero. testsuite/ PR tree-optimization/21294 * gcc.dg/tree-ssa/pr21294.c: New. From-SVN: r99111
2005-04-29re PR tree-optimization/21030 (ICE in set_value_range building 176.gcc with -O2)Kazu Hirata1-6/+27
gcc/ PR tree-optimization/21030 * tree-vrp.c (adjust_range_with_scev): Do not create invalid ranges where VR->MAX is smaller than VR->MIN. testsuite/ PR tree-optimization/21030 * gcc.dg/tree-ssa/pr21030.c: New. From-SVN: r98999
2005-04-24tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use COMPARISON_CLASS_P.Kazu Hirata1-5/+5
* tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use COMPARISON_CLASS_P. * tree-ssa-pre.c (create_value_expr_from): Use CONSTANT_CLASS_P and REFERENCE_CLASS_P. * tree-ssa-propagate.c (stmt_makes_single_load, stmt_makes_single_store): Use REFERENCE_CLASS_P. * tree-vect-transform.c (vect_is_simple_cond): Use COMPARISON_CLASS_P. * tree-vrp.c (extract_range_from_assert, build_assert_expr_for, fp_predicate, has_assert_expr): Use COMPARISON_CLASS_P. From-SVN: r98664
2005-04-23re PR tree-optimization/21088 (VRP passes fold the type of operands of a ↵Kazu Hirata1-3/+3
comparison) PR tree-optimization/21088 * fold-const.c (fold_unary, fold_binary, fold_ternary): Export. * tree-vrp.c (compare_values): Use fold_binary to compare pointers. Use boolean_type_node as the type of a comparison expression being folded. * tree.h: Add prototypes for fold_unary, fold_binary, fold_ternary. From-SVN: r98600
2005-04-17tree-vrp.c (maybe_add_assert_expr): Don't assert ASSERT_EXPRs for single-use ↵Kazu Hirata1-0/+8
variable. * tree-vrp.c (maybe_add_assert_expr): Don't assert ASSERT_EXPRs for single-use variable. From-SVN: r98278
2005-04-17tree-vrp.c (compare_values): Check that VAL1 and VAL2 are both pointers or ↵Kazu Hirata1-14/+7
both integers. * tree-vrp.c (compare_values): Check that VAL1 and VAL2 are both pointers or both integers. From-SVN: r98273
2005-04-17tree-flow-inline.h (get_stmt_operands): Remove.Kazu Hirata1-1/+0
* tree-flow-inline.h (get_stmt_operands): Remove. * lambda-code.c, tree-ssa-loop-unswitch.c, tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa-propagate.c, tree-ssa-sink.c, tree-ssa.c, tree-tailcall.c, tree-vect-transform.c, tree-vectorizer.c, tree-vrp.c): Remove calls to get_stmt_operands. * doc/tree-ssa.texi: Don't mention get_stmt_operands. From-SVN: r98262
2005-04-15re PR tree-optimization/21021 (ICE in tree-vrp building glibc)Kazu Hirata1-2/+14
gcc/ PR tree-optimization/21021 * tree-vrp.c (compare_values): Work around a bug in the front end that produces a comparison of mismatched types. testsuite/ PR tree-optimization/21021 * gcc.c-torture/compile/pr21021.c: New. From-SVN: r98161
2005-04-14re PR tree-optimization/20657 ([tcb] VRP does not get rid of a redundant ↵Kazu Hirata1-0/+2
"if" statement.) gcc/ PR tree-optimization/20657 * tree-vrp.c (extract_range_from_expr): Notice INTEGER_CST to create an appropriate range from it. testsuite/ PR tree-optimization/20657 * gcc.dg/tree-ssa/pr20657.c: New. From-SVN: r98134
2005-04-13re PR tree-optimization/20913 (copy-prop does not fold conditionals)Kazu Hirata1-0/+12
gcc/ PR tree-optimization/20913 * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR. testsuite/ PR tree-optimization/20913 * gcc.dg/tree-ssa/pr20913.c: New. From-SVN: r98091
2005-04-11* tree-vrp.c: Fix a comment typo.Kazu Hirata1-1/+1
From-SVN: r97974
2005-04-11* tree-vrp.c (maybe_add_assert_expr): Move a comment.Kazu Hirata1-5/+5
From-SVN: r97973