Age | Commit message (Collapse) | Author | Files | Lines |
|
* fold-const.c (fold, fold_relational_hi_lo,
nondestructive_fold_binary_to_constant,
fold_read_from_constant_string): Use fold_convert instead of convert.
* builtins.c (simplify_builtin, simplify_builtin_strstr,
simplify_builtin_strchr, simplify_builtin_strrchr,
simplify_builtin_strpbrk): Use fold_convert instead of convert.
From-SVN: r82102
|
|
* tree.c (array_type_nelts, save_expr, substitute_in_expr,
get_unwidened, get_narrower): Replace build with build2.
* fold-const.c (negate_expr, associate_trees, size_binop,
fold_convert, eval_subst, omit_one_operand, invert_truthvalue,
pedantic_omit_one_operand, distribute_bit_expr,
make_bit_field_ref, optimize_bit_field_compare,
decode_field_reference, range_binop, make_range,
build_range_check, fold_range_test, fold_truthop,
optimize_minmax_comparison, extract_muldiv_1,
fold_binary_op_with_conditional_arg, fold_mathfn_compare,
fold_inf_compare, fold_single_bit_test, fold,
fold_relational_hi_lo, nondestructive_fold_binary_to_constant):
Likewise replace build with either build2 or build3.
From-SVN: r82083
|
|
PR middle-end/3074
* fold-const.c (strip_compound_expr): Delete function.
(count_cond): Delete function.
(fold_binary_op_with_conditional_arg): Only perform transformations
"a + (b?c:d) -> b ? a+c : a+d" and "(b?c:d) + a -> b ? c+a : d+a"
when a is constant. This greatly simplifies this routine.
* tree.c (saved_expr_p): Delete function.
* tree.h (saved_expr_p): Delete function prototype.
* gcc.dg/pr3074-1.c: New test case.
* gcc.dg/sequence-pt-1.c: Remove an XFAIL.
From-SVN: r82071
|
|
2004-05-19 Paolo Bonzini <bonzini@gnu.org>
* fold-const.c: Remove non-printable character 160.
From-SVN: r82024
|
|
lang_hooks.foo.
* c-gimplify.c (c_genericize):
Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
* c-parse.in <expr_no_commas>: Likewise.
<if_prefix>: Likewise.
<select_or_iter_stmt>: Likewise.
* expr.c (expand_var, expand_expr_real_1): Likewise.
* expr.h (expand_expr): Make it a static inline function.
Move prototype for expand_expr_real up before this.
* fold-const.c (fold_relational_hi_lo, fold_relational_const):
Likewise.
* gimplify.c (gimple_boolify, gimplify_addr_expr,
gimplify_asm_expr, gimplify_expr): Likewise.
* tree-cfg.c (dump_tree_cfg, dump_cfg_stats, tree_cfg2vcg,
dump_function_to_file): Likewise.
* tree-dfa.c (dump_immediate_uses, dump_dfa_stats): Likewise.
* tree-inline.c (remap_block, save_body, walk_tree): Likewise.
* tree-into-ssa.c (dump_tree_ssa): Likewise.
* tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
Likewise.
* tree-optimize.c (execute_one_pass): Likewise.
* tree-pretty-print.c (dump_generic_bb_buff): Likewise.
* tree-ssa-alias.c (dump_alias_stats, dump_alias_info): Likewise.
objc/
* objc-act.c (objc_build_try_enter_fragment,
objc_build_try_epilogue, objc_build_catch_stmt,
objc_build_finally_prologue): Replace calls via (*lang_hooks.foo)
with lang_hooks.foo ().
From-SVN: r81907
|
|
From-SVN: r81764
|
|
op is a comparison operator and C1...
* fold-const.c (fold_div_compare): New function to optimize X/C1 op C2
where op is a comparison operator and C1 and C2 are integer constants
into a range check.
(fold): Call fold_div_compare.
* gcc.c-torture/execute/divcmp-1.c: New test case.
* gcc.c-torture/execute/divcmp-2.c: New test case.
* gcc.c-torture/execute/divcmp-3.c: New test case.
From-SVN: r81645
|
|
* fold-const.c (fold_convert_const, fold): Add missing
FIX_ROUND_EXPR case.
From-SVN: r81410
|
|
* bb-reorder.c, c-opts.c, cfglayout.c, cgraph.c, cgraphunit.c,
cppfiles.c, fold-const.c, ggc-zone.c, loop-doloop.c, optabs.c,
reg-stack.c, varasm.c, config/alpha/ev4.md,
config/alpha/ev5.md, config/alpha/ev6.md, config/arm/arm.c,
config/c4x/c4x.c, config/c4x/c4x.md, config/cris/cris.c,
config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c,
config/frv/frv.h, config/frv/frv.md, config/h8300/h8300.c,
config/i386/i386.c, config/i386/i386.md, config/i386/winnt.c,
config/ia64/itanium2.md, config/ip2k/ip2k.c,
config/mips/mips.c, config/mips/mips.h, config/mips/sr71k.md,
config/pa/pa.c, config/s390/s390.c, config/sh/sh.c: Fix
comment typos.
From-SVN: r81345
|
|
* builtins.c, cgraph.c, cgraphunit.c, final.c, fold-const.c:
Fix comment typos.
From-SVN: r81291
|
|
(NEGATE_EXPR, ...)).
* fold-const.c (fold): Prefer fold_convert (negate_expr (...)) to
fold (build1 (NEGATE_EXPR, ...)). Optimize X / -1 as -X and
X % -1 as 0.
From-SVN: r81177
|
|
* fold-const.c (fold_convert): Make function extern/public.
* tree.h (fold_convert): Prototype here.
* builtins.c (expand_builtin_strstr, expand_builtin_strchr,
expand_builtin_strrchr, expand_builtin_strpbrk,
expand_builtin_mempcpy, expand_builtin_bcopy,
expand_builtin_bzero, expand_builtin_memcmp,
expand_builtin_strcmp, expand_builtin_strncmp,
stabilize_va_list, expand_builtin_sprintf,
fold_trunc_transparent_mathfn, fold_builtin_logarithm,
fold_builtin_exponent, fold_builtin_mempcpy,
fold_builtin_strcpy, fold_builtin_strcmp, fold_builtin_strncmp,
fold_builtin_signbit, fold_builtin_isdigit, fold_builtin): Prefer
fold_convert to "convert" or "fold (build1 (NOP_EXPR, ...))".
From-SVN: r80878
|
|
the new builtin.
* builtins.c (fold_builtin_cabs, fold_builtin): Use
`mathfn_built_in' to determine the new builtin.
* fold-const.c (fold): Likewise.
From-SVN: r80680
|
|
to allow a NULL_TREE to be returned.
* fold-const.c (fold_binary_op_with_conditional_arg): Tweak
calling convention to allow a NULL_TREE to be returned. Factor
sanity checks from callers, return NULL_TREE when appropriate.
(fold): Handle COMPOUND_EXPR operands of binary expressions
before COND_EXPR operands. Use reorder_operands_p(a,b) to check
whether a op (b,c) can be rewritten as (b, a op c). Simplify
calls to fold_binary_op_with_conditional_arg.
From-SVN: r80609
|
|
* fold-const.c (fold) <PLUS_EXPR>: Guard (-A)+B -> B-A transformation
with reorder_operands_p.
From-SVN: r80381
|
|
From-SVN: r80327
|
|
PR c++/14755
* fold-const.c (fold) <EQ_EXPR>: Properly compute newconst in
"bitfld++ == const" to "++bitfld == const + incr" transformations.
* gcc.c-torture/execute/20040331-1.c: New test.
* gcc.dg/20040331-1.c: New test.
From-SVN: r80294
|
|
* expr.c (get_inner_reference): Use DECL_UNSIGNED, not TREE_UNSIGNED.
* stor-layout.c (layout_decl): Likewise.
* tree.c (get_narrower): Likewise and also use BIT_FIELD_REF_UNSIGNED.
* fold-const.c (make_bit_field_ref): Use BIT_FIELD_REF_UNSIGNED.
* print-tree.c (print_node): Handle various used of unsigned_flag.
* tree.def (BIT_FIELD_REF): Update comment.
* tree.h (TREE_UNSIGNED): Deleted.
(DECL_UNSIGNED, BIT_FIELD_REF_UNSIGNED): New macros.
* cp/class.c (VTT_TOP_LEVEL_P): Use unsigned_flag directly.
* f/com.c (ffe_truthvalue_conversion, case COMPONENT_REF):
Use DECL_UNSIGNED and integer_onep.
From-SVN: r80293
|
|
* builtins.c, c-aux-info.c, c-common.c, c-cppbuiltin.c, c-decl.c:
Change most occurrences of TREE_UNSIGNED to TYPE_UNSIGNED.
* c-format.c, c-opts.c, c-pretty-print.c, c-typeck.c: Likewise.
* calls.c, convert.c, dbxout.c, dojump.c, dwarf2out.c: Likewise.
* expmed.c, expr.c, fold-const.c, function.c, integrate.c: Likewise.
* optabs.c, sdbout.c, stmt.c, stor-layout.c, tree-dump.c: Likewise.
* tree.c, config/iq2000/iq2000.c, config/m32r/m32r.c: Likewise.
* config/mips/mips.c, config/rs6000/rs6000.c: Likewise.
* config/s390/s390.c, config/sparc/sparc.c, objc/objc-act.c: Likewise.
* stor-layout.c (layout_type, case COMPLEX_TYPE): Test for
REAL_TYPE, not INTEGER_TYPE.
(layout_type, case VECTOR_TYPE): Simplify code.
* tree.c (build_vector_type_for_mode): Remove dup unsigned setting.
* tree.h: Update comments.
(STRIP_NOPS): Use TYPE_UNSIGNED.
(TYPE_UNSIGNED): New macro.
(TYPE_TRAP_SIGNED): Remove now redundant check.
(SAVE_EXPR_NOPLACEHOLDER): Don't use TREE_UNSIGNED.
* cp/call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
* cp/class.c (check_bitfield_decl): Likewise.
* cp/cvt.c (type_promotes_to): Likewise.
* cp/decl.c (finish_enum): Likewise.
* cp/mangle.c (write_builtin_type): Likewise.
* cp/semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
* cp/typeck.c (type_after_usual_arithmetic_conversions): Likewise.
(build_binary_op): Likewise.
* f/com.c (ffecom_arrayref_): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
(ffecom_expr_): Likewise.
* java/jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.
* treelang/treetree.c (tree_lang_signed_or_unsigned_type):
Use TYPE_UNSIGNED, not TREE_UNSIGNED.
* ada/decl.c (gnat_to_gnu_entity, make_type_from_size):
Use TYPE_UNSIGNED, not TREE_UNSIGNED.
* ada/trans.c (tree_transform, convert_with_check): Likewise.
* ada/utils.c (gnat_signed_or_unsigned_type): Likewise.
(build_vms_descriptor, unchecked_convert): Likewise.
* ada/utils2.c (nonbinary_modular_operation): Likewise.
From-SVN: r80287
|
|
Reviewed by Roger Sayle.
From-SVN: r80093
|
|
* fold-const.c (tree_expr_nonnegative_p): Handle BIT_XOR_EXPR like
BIT_IOR_EXPR; A^B is nonnegative when A and B are nonnegative.
* gcc.dg/compare8.c: Add an additional test for XOR.
From-SVN: r79979
|
|
* builtins.c (fold_builtin): Add new builtin optimizations for
sqrt and/or cbrt.
* fold-const.c (fold): Likewise.
testsuite:
* gcc.dg/torture/builtin-explog-1.c: Add new cases.
* gcc.dg/torture/builtin-math-1.c: Likewise.
* builtin-power-1.c: New test.
From-SVN: r79959
|
|
nonnegative or B is nonnegative.
* fold-const.c (tree_expr_nonnegative_p): A&B is nonnegative when
A is nonnegative or B is nonnegative. Similarly A|B is nonnegative
when both A and B are nonnegative.
(tree_expr_nonzero_p): A|B is nonzero when A is nonzero or B is
nonzero.
From-SVN: r79870
|
|
* fold-const.c (fold): Remove cases for INTEGER_CST, REAL_CST,
VECTOR_CST, STRING_CST, COMPLEX_CST, and CONSTRUCTOR.
From-SVN: r79862
|
|
E4 <= t && t <= E6)
2004-03-23 Kazu Hirata <kazu@cs.umass.edu>
PR optimization/14669
* fold-const.c (fold): Only unwiden integer comparisons for equality
or inequality operators, or when the signedness is the same.
* g++.dg/opt/fold2.C: New test case.
From-SVN: r79859
|
|
* alias.c (get_alias_set): Remove handling of PLACEHOLDER_EXPR.
* emit-rtl.c (component_ref_for_mem_expr): Likewise.
(set_mem_attributes_minus_bitpos): Call SUBSTITUTE_PLACEHOLDER_IN_EXPR.
* explow.c (expr_size): Likewise.
* expr.h (placeholder_list, find_placeholder): Deleted.
* expr.c (store_constructor): Likewise.
(get_inner_reference): Likewise. Also don't call find_placeholder.
(placeholder_list, find_placeholder): Deleted.
(is_aligning_offset): Don't handle WITH_RECORD_EXPR, PLACEHOLDER_EXPR.
(expand_expr_real, cases PLACEHOLDER_EXPR, WITH_RECORD_EXPR): Likewise.
(highest_pow2_factor, case WITH_RECORD_EXPR): Remove.
* dojump.c (do_jump, case WITH_RECORD_EXPR): Likewise.
* dwarf2out.c (loc_descriptor_from_tree, case WITH_RECORD_EXPR):
Likewise.
* fold-const.c (invert_truthvalue, case WITH_RECORD_EXPR): Likewise.
(extract_muldiv, case WITH_RECORD_EXPR): Likewise.
* tree.c (expr_align, case WITH_RECORD_EXPR): Likewise.
(contains_placeholder_p): Don't handle WITH_RECORD_EXPR.
Clean up by using first_rtl_op.
(substitute_in_expr): Use SUBSTITUTE_IN_EXPR for recursive call.
(substitute_placeholder_in_expr): New function.
* tree.def (WITH_RECORD_EXPR): Deleted.
* tree.h (SUBSTITUTE_IN_EXPR, SUBSTITUTE_PLACEHOLDER_IN_EXPR): New.
(substitute_placeholder_in_expr): New.
* ada/decl.c (gnat_to_gnu_entity): Use SUBSTITUTE_PLACEHOLDER_IN_EXPR.
* ada/trans.c (tree_transform, emit_index_check): Likewise.
* ada/utils.c (build_template): Likewise.
(max_size, convert): Remove handling of WITH_RECORD_EXPR.
(maybe_unconstrained_array, unchecked_convert): Likewise.
* ada/utils2.c (gnat_truthvalue_conversion, build_binary_op): Likewise.
(build_unary_op): Likewise.
(compare_arrays, build_allocator): Use SUBSTITUTE_PLACEHOLDER_IN_EXPR.
(fill_vms_descriptor): Likewise.
(build_call_alloc_dealloc): Likewise.
ALIGN is unsigned.
* ada/gigi.h (build_call_alloc_dealloc): Alignment is unsigned.
From-SVN: r79789
|
|
From-SVN: r79761
|
|
* fold-const.c (fold): Replace "final_type" with "type".
Remove variable "final_type".
From-SVN: r79754
|
|
* fold-const.c (fold): Constify "type".
Replace "TREE_TYPE (t)" with "type".
From-SVN: r79753
|
|
variable.
* fold-const.c (fold): Replace "t" with "tem" where it is used
as a temporary variable. Remove "orig_t" and all of its uses.
From-SVN: r79746
|
|
* fold-const.c (fold): Remove variable "invert".
Move the handling of relational expressions that can be folded
to a constant ...
(fold_relational_const): ... here.
(tree_expr_nonzero_p): New.
From-SVN: r79745
|
|
* fold-const.c (fold) <ABS_EXPR>: Move the handling of constants
...
(fold_abs_const): ... here.
From-SVN: r79709
|
|
* fold-const.c (negate_expr): Move the handling of constants
...
(fold_negate_const): ... here.
From-SVN: r79693
|
|
From-SVN: r79574
|
|
PR c++/14481
* fold-const.c (fold): Set TREE_NO_UNUSED_WARNING on implicitly
generated COMPOUND_EXPRs.
PR c++/14481
* g++.dg/warn/Wunused-7.C: New test.
From-SVN: r79570
|
|
with lang_hooks.foo ().
* fold-const.c (negate_expr, operand_equal_for_comparison_p,
optimize_bit_field_compare, decode_field_reference, all_ones_mask_p,
make_range, build_range_check, fold_range_test, unextend,
constant_boolean_node, fold_binary_op_with_conditional_arg,
fold_truthop, fold_mathfn_compare, fold_inf_compare,
fold_single_bit_test, fold): Replace calls via (*lang_hooks.foo) ()
with lang_hooks.foo ().
From-SVN: r79471
|
|
integer constant one bit less than...
* fold-const.c (negate_expr_p) <RSHIFT_EXPR>: We can optimize
-((int)X>>C) where C is an integer constant one bit less than the
size of X into (unsigned)X>>C. Similarly for unsigned->signed.
(negate_expr) <RSHIFT_EXPR>: Implement the above transformations.
* simplify-rtx.c (simplify_unary_operation): Also implement the
above transformations at the RTL level.
* gcc.c-torture/execute/20040311-1.c: New test case.
From-SVN: r79334
|
|
* fold-const.c (tree_expr_nonnegative_p): Add more builtin cases.
testsuite:
* gcc.dg/torture/builtin-nonneg-1.c: New test.
From-SVN: r79269
|
|
* fold-const.c (tree_expr_nonnegative_p): Reformat checks for
builtins.
From-SVN: r79088
|
|
* fold-const.c (fold) <IOR_EXPR>: Fold x | x as x.
<XOR_EXPR>: Fold x ^ x as zero.
<AND_EXPR>: Fold x & x as x.
From-SVN: r79065
|
|
"++foo == const+incr".
* fold-const.c (fold) <EQ_EXPR>: Rewrite optimization to transform
"foo++ == const" into "++foo == const+incr".
* gcc.c-torture/execute/20040307-1.c: New test case.
From-SVN: r79064
|
|
* tree.h (BUILTIN_EXP10_P, BUILTIN_EXPONENT_P, BUILTIN_SQRT_P,
BUILTIN_CBRT_P, BUILTIN_ROOT_P): New macros.
* builtins.c (fold_builtin_logarithm, fold_builtin): Use new
macros.
* fold-const.c (fold_mathfn_compare, fold): Likewise.
From-SVN: r79023
|
|
zero has a known result.
* fold-const.c (fold): An equality comparison of a non-weak object
against zero has a known result. Similarly an equality comparison
of the address of two non-weak, unaliased symbols has a known result.
* ggc-page.c (struct page_entry): New field PREV.
(ggc_alloc): Update PREV field appropriately.
(sweep_pages): Likewise.
(ggc_free): Likewise. Use PREV field rather than loop to
improve ggc_free performance.
cp/
* init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to
the proper type.
From-SVN: r78713
|
|
* fold-const.c (fold): Strip NOPs that change the signedness
for RSHIFT too. Expand comment.
From-SVN: r78603
|
|
* fold-const.c (fold): Revert 2004-02-25 change. Use the original
operands to build a tree with swapped operands.
* expr.c (expand_expr_real) <MAX_EXPR>: Consistently use the
'unsignedp' predicate to specify the signedness.
Co-Authored-By: Roger Sayle <roger@eyesopen.com>
From-SVN: r78558
|
|
* c-decl.c, c-ppoutput.c, combine.c, cppfiles.c, dwarf2out.c,
expr.c, fold-const.c, gcc.c, haifa-sched.c, loop-iv.c,
params.def, read-rtl.c, rtl.c, rtlanal.c, toplev.c: Fix
comment typos and formatting. Follow spelling conventions.
From-SVN: r78555
|
|
regard to signedness.
* fold-const.c (fold): Treat MAX_EXPR and MIN_EXPR like
comparisons with regard to signedness.
From-SVN: r78441
|
|
* combine.c (SHIFT_COUNT_TRUNCATED): Remove.
* defaults.h (SHIFT_COUNT_TRUNCATED): Provide the default.
* expmed.c: Assume SHIFT_COUNT_TRUNCATED is always defined.
* fold-const.c: Likewise.
* simplify-rtx.c: Likewise.
From-SVN: r78230
|
|
unordered comparison codes.
* fold-const.c (invert_truthvalue): Do not call invert_tree_comparison
for unordered comparison codes.
From-SVN: r78103
|
|
From-SVN: r77883
|