* fold-const.c (fold_binary) <EQ_EXPR>: Fold (~X & C) eq/ne 0 as
(X & C) ne/eq 0, where C is a single bit, i.e. a power of two.
Fold both "((X & C) ^ C) eq/ne 0" and "((X ^ C) & C) eq/ne 0"
as (X & C) ne/eq 0.
* gcc.dg/fold-eqandnot-1.c: New test case.
From-SVN: r111471
PR middle-end/19983
* real.c (real_nan): Allow both 0x and 0X as hexadecimal prefixes.
* gcc.c-torture/execute/ieee/builtin-nan-1.c: New test case.
From-SVN: r111470
* opts.c (decode_options): Do not handle flag_strength_reduce.
(common_handle_option): Handle OPT_floop_optimize, OPT_frerun_loop_opt
and OPT_fstrength_reduce.
* tree-ssa-loop.c (tree_ssa_loop_prefetch): Only test
flag_prefetch_loop_arrays for being nonzero.
* common.opt (floop-optimize, frerun-loop-opt): Resurrected as
no-ops.
(fprefetch-loop-arrays-rtl): Removed.
(flag_prefetch_loop_arrays): Do not specify the value.
* doc/passes.texi: Update documentation of loop optimizer
passes.
* doc/invoke.texi (-fstrength-reduce, -fprefetch-loop-arrays-rtl,
-frerun-loop-opt): Remove.
* gcc.target/i386/20000614-2.c: Do not use -fno-strength-reduce.
* gcc.dg/20030324-1.c: Do not use -fstrength-reduce.
From-SVN: r111469
2006-02-26 Richard Guenther <rguenther@suse.de>
PR tree-optimization/26421
* tree-ssa-alias.c (find_used_portions): Don't treat parameters
in function calls that are ADDR_EXPRs as using the whole structure.
* gcc.dg/tree-ssa/pr26421.c: New testcase.
From-SVN: r111461
gcc/
* common.opt (-floop-optimize, -frerun-loop-opt): Remove.
* tree-pass.h (pass_loop_optimize): Remove.
* passes.c (pass_loop_optimize): Never run it.
* toplev.c (backend_init): Don't call init_loop.
* opts.c (flag_loop_optimize_set): Remove.
(decode_options): Never set flag_loop_optimize or flag_rerun_loop_opt.
(common_handle_option) <OPT_floop_optimize>: Remove. Don't disable
the old RTL loop optimizer when profiling enabled.
* predict.c (tree_estimate_probability): Always strip builtin_expect.
* cfgcleanup.c (try_forward_edges): Don't avoid killing loop
pre-headers for the sake of the old RTL loop optimizer.
* Makefile.in: Remove all references to loop.o.
* doc/invoke.texi: Remove all references to -floop-optimize
and -frerun-loop-opt.
testsuite/
* gcc.dg/20031201-1.c: Don't use -frerun-loop-opt.
* g++.old-deja/g++.robertl/eb132.C: Likewise.
From-SVN: r111459
2006-02-26 Roger Sayle <roger@eyesopen.com>
James A. Morrison <phython@gcc.gnu.org>
PR middle-end/21137
* fold-const.c (fold_binary) <EQ_EXPR>: Fold ((X>>C1)&C2) eq/ne 0,
when C2 is a power of two, as either (X&(C2<<C1)) eq/ne 0 if the
new constant C2<<C1, or as (X<0) or (X,false) depending upon the
signedness of the shift operation.
* gcc.dg/fold-eqandshift-1.c: New test case.
Co-Authored-By: James A. Morrison <phython@gcc.gnu.org>
From-SVN: r111453
* simplify-rtx.c (simplify_relational_operation_1): Simplify
(X^Y) == 0 as X == Y and (X^Y) != 0 as X != Y. Simplify (X^Y) == Y
as X == 0, and some symmetry related transformations.
Simplify (X^C1) == C2 as X == (C1^C2). Split long comment line.
From-SVN: r111443
PR middle-end/23673
* fold-const.c (fold_binary) <EQ_EXPR>: Fold (X^Y) == 0 as X == Y
and (X^Y) != 0 as X != Y. Fold (X^Y) == Y as X == 0, and some
symmetry related transformations. Fold (X^C1) == C2 as
X == (C1^C2).
* gcc.dg/fold-eqxor-1.c: New test case.
* gcc.dg/fold-eqxor-2.c: Likewise.
* gcc.dg/fold-eqxor-3.c: Likewise.
From-SVN: r111442
2006-02-25 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/23092
* trans-intrinsic.c (gfc_conv_intrinsic_arith): If the
mask expression exists and has rank 0, enclose the generated
loop in an "if (mask)".
* (gfc_conv_intrinsic_minmaxloc): Likewise.
2006-02-25 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/23092
* scalar_mask_1.f90: New test.
From-SVN: r111438
PR middle-end/24952
* combine.c (try_combine): Explicitly check whether GET_CODE is
a SET or a CLOBBER, instead on checking that it isn't a USE.
From-SVN: r111425
* fold-const.c (fold_comparison): New subroutine of fold_binary
containing transformations common to both the equality and
ordering relational operators, factored out of fold_binary.
(fold_binary): Separate out the equality operators (EQ_EXPR
and NE_EXPR) from the ordering operators (LT_EXPR, GT_EXPR,
LE_EXPR and GE_EXPR), calling fold_comparison to perform the
transformations common to both.
(fold_div_compare): Fix latent bugs in the previously unreachable
LT_EXPR and GE_EXPR cases.
From-SVN: r111423
2006-02-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24519
* dependency.c (gfc_is_same_range): Correct typo.
(gfc_check_section_vs_section): Call gfc_is_same_range.
PR fortran/25395
* trans-common.c (add_equivalences): Add a new flag that is set when
an equivalence is seen that prevents more from being reset until the
start of a new traversal of the list, thus ensuring completion of
all the equivalences.
2006-02-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24519
* gfortran.dg/dependency_3.f90: New test.
* gfortran.fortran-torture/execute/vect-3.f90: Remove two of the
XFAILs.
PR fortran/25395
* gfortran.dg/equiv_6.f90: New test.
From-SVN: r111416
* tree.h (PHI_ARG_NONZERO): Remove.
* tree-phinodes.c (add_phi_arg): No longer initialize PHI_ARG_NONZERO.
(remove_phi_arg_num): No longer copy PHI_ARG_NONZERO from the old
node to the new node.
From-SVN: r111400
PR tree-optimization/26425
* tree-vrp.c (vrp_visit_assignment): If the LHS's type has a NULL
min/max, then assume its varying.
* gcc.c-torture/compile/pr26425.c: New test.
From-SVN: r111399