Richard Guenther [Fri, 29 Apr 2011 15:00:04 +0000 (15:00 +0000)]
builtins.c (fold_builtin_classify_type): Use integer_type_node for the type of the result.
2011-04-29 Richard Guenther <rguenther@suse.de>
* builtins.c (fold_builtin_classify_type): Use integer_type_node
for the type of the result.
(fold_builtin_isascii): Likewise.
(fold_builtin_toascii): Use integer_type_node where appropriate.
(fold_builtin_logb): Likewise.
(fold_builtin_frexp): Likewise.
(fold_builtin_strstr): Likewise.
(fold_builtin_strpbrk): Likewise.
(fold_builtin_fputs): Likewise.
(fold_builtin_sprintf): Likewise.
(fold_builtin_snprintf): Likewise.
(fold_builtin_printf): Likewise.
(do_mpfr_remquo): Use a proper type for the assigned constant.
(do_mpfr_lgamma_r): Likewise.
* dwarf2out.c (resolve_one_addr): Use size_int.
* except.c (init_eh): Likewise.
(assign_filter_values): Use integer_type_node for filter values.
(sjlj_emit_dispatch_table): Use integer_type_node for dispatch
indices.
* tree-cfg.c (move_stmt_eh_region_tree_nr): Use integer_type_node
for EH region numbers.
* tree-vrp.c (simplify_div_or_mod_using_ranges): Use integer_type_node
for the shift amount.
Jerry DeLisle [Fri, 29 Apr 2011 14:56:02 +0000 (14:56 +0000)]
re PR libfortran/48488 (Wrong default format for real numbers)
2011-04-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Janne Blomqvist <jb@gcc.gnu.org>
PR libgfortran/48488
PR libgfortran/48602
PR libgfortran/48615
PR libgfortran/48684
PR libgfortran/48787
* io/write.c (write_d, write_e, write_f, write_en,
write_es): Add precision compemsation parameter to call.
(set_fnode_default): Adjust default widths to assure
round trip on write and read. (write_real): Adjust call to write_float.
(write_real_g0): Calculate compensation for extra precision and adjust
call to write_float.
* io/write_float.def (output_float_FMT_G_): Use volatile rather than
asm volatile to avoid optimization issue. Correctly calculate the
number of blanks (nb) to be appended and simplify calculation logic.
(write_float): Increase MIN_FIELD_WIDTH by one to accomodate the new
default widths. Eliminate the code that attempted to reduce the
the precision used in later sprintf functions. Add call parameter to
compensate for extra precision.
Co-Authored-By: Janne Blomqvist <jb@gcc.gnu.org>
From-SVN: r173166
Richard Guenther [Fri, 29 Apr 2011 13:11:18 +0000 (13:11 +0000)]
tree-inline.c (remap_eh_region_tree_nr): Use integer_type_node for the remapped region number.
2011-04-29 Richard Guenther <rguenther@suse.de>
* tree-inline.c (remap_eh_region_tree_nr): Use integer_type_node
for the remapped region number.
* predict.c (build_predict_expr): Use integer_type_node for the
predict kind.
* fold-const.c (fold_binary_loc): Use integer_type_node for
the shift amount. Use a proper type for the PLUS_EXPR operand.
Michael Matz [Fri, 29 Apr 2011 12:27:26 +0000 (12:27 +0000)]
lto-streamer.c (lto_streamer_cache_insert_1): Accept to override other trees that just builtins.
* lto-streamer.c (lto_streamer_cache_insert_1): Accept to override
other trees that just builtins.
(lto_record_common_node): Don't leave NULL TYPE_CANONICAL.
lto/
* lto.c (toplevel): Include tree-flow.h.
(lto_read_in_decl_state): Don't merge types here.
(tree_with_vars): New static hash table.
(remember_with_vars): New static functions.
(LTO_FIXUP_TYPE): New macro.
(lto_ft_common, lto_ft_decl_minimal, lto_ft_decl_common,
lto_ft_decl_with_vis, lto_ft_decl_non_common, lto_ft_function,
lto_ft_field_decl, lto_ft_type, lto_ft_binfo, lto_ft_constructor,
lto_ft_expr, lto_fixup_types, uniquify_nodes): New static functions.
(lto_read_decls): Uniquify while reading in trees.
(lto_fixup_data_t, LTO_FIXUP_SUBTREE,
LTO_REGISTER_TYPE_AND_FIXUP_SUBTREE, no_fixup_p, lto_fixup_common,
lto_fixup_decl_minimal, lto_fixup_decl_common, lto_fixup_decl_with_vis,
lto_fixup_decl_non_common, lto_fixup_function, lto_fixup_field_decl,
lto_fixup_type, lto_fixup_binfo, lto_fixup_constructor,
lto_fixup_tree): Remove.
(lto_fixup_state): Remove data argument. Use
lto_symtab_prevailing_decl.
(LTO_SET_PREVAIL, LTO_NO_PREVAIL): New macros.
(lto_fixup_prevailing_decls): New function.
(lto_fixup_state_aux): Argument aux is unused.
(lto_fixup_decls): Don't allocate pointer sets, don't use
lto_fixup_tree, use lto_fixup_prevailing_decls.
(read_cgraph_and_symbols): Allocate and remove tree_with_vars.
* Make-lang.in (lto/lto.o): Depend on $(TREE_FLOW_H).
Richard Guenther [Fri, 29 Apr 2011 12:00:55 +0000 (12:00 +0000)]
tree-nested.c (get_trampoline_type): Use size_int.
2011-04-29 Richard Guenther <rguenther@suse.de>
* tree-nested.c (get_trampoline_type): Use size_int.
(get_nl_goto_field): Likewise.
* tree-eh.c (lower_try_finally_switch): Use integer_type_node
for all indexes.
(lower_eh_constructs_2): Likewise.
(lower_resx): Likewise.
(lower_eh_dispatch): Likewise.
* tree-mudflap.c (mf_build_string): Use size_int.
(mudflap_register_call): Use integer_type_node for the flag.
(mudflap_enqueue_constant): Use size_int.
* tree-chrec.c (reset_evolution_in_loop): Copy CHREC_VAR
instead of rebuilding it.
* src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE):
Define.
Use them to handle ELF vs. ECOFF differences.
[__osf__] (_GLOBAL__F_ffi_call_osf): Define.
Ira Rosen [Thu, 28 Apr 2011 19:50:28 +0000 (19:50 +0000)]
re PR tree-optimization/48765 (ICE in vect_transform_stmt)
PR tree-optimization/48765
* tree-vectorizer.h (vect_make_slp_decision): Return bool.
* tree-vect-loop.c (vect_analyze_loop_operations): Add new
argument to indicate if loop aware SLP is being used. Scan
the statements and update the vectorization factor
according to the type of
vectorization before statement analysis.
(vect_analyze_loop_2): Get a return value from
vect_make_slp_decision, pass it to
vect_analyze_loop_operations.
(vectorizable_reduction): Set number of copies to 1 in case of
pure SLP statement.
* tree-vect-stmts.c (vectorizable_conversion,
vectorizable_assignment, vectorizable_shift,
vectorizable_operation, vectorizable_type_demotion,
vectorizable_type_promotion, vectorizable_store,
vectorizable_load): Likewise.
(vectorizable_condition): Move the check that it is not SLP
vectorization before the number of copies check.
* tree-vect-slp.c (vect_make_slp_decision): Return TRUE if
decided to vectorize the loop using SLP.
Paolo Carlini [Thu, 28 Apr 2011 10:52:17 +0000 (10:52 +0000)]
re PR libstdc++/48760 (std::complex constructor buggy in the face of NaN's)
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/48760
* include/std/complex (complex<float>::complex(float, float),
complex<double>::complex(double, double),
complex<long double>::complex(long double, long double)): Use
list-initialization in C++0x mode, initialize in the body in
C++03 mode.
* testsuite/26_numerics/complex/cons/48760.cc: New.
* testsuite/26_numerics/complex/cons/48760_c++0x.cc: Likewise.
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
* include/std/bitset (_Base_bitset(unsigned long long)): Minor
tweak, remove redundant round braces.
Richard Guenther [Thu, 28 Apr 2011 09:11:17 +0000 (09:11 +0000)]
tree-ssa-structalias.c (dump_constraint): Don't end the line.
2011-04-28 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (dump_constraint): Don't end the line.
(debug_constraint): Do it here.
(dump_constraints): And here.
(rewrite_constraints): And here.
(dump_constraint_edge): Remove.
(dump_constraint_graph): Rewrite to produce DOT output.
(solve_constraints): Build succ graph as late as possible.
Dump constraint graphs before and after solving.
Richard Guenther [Thu, 28 Apr 2011 09:08:42 +0000 (09:08 +0000)]
tree-ssa-structalias.c (find_func_aliases_for_builtin_call): New function split out from ...
2011-04-28 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
New function split out from ...
(find_func_aliases): ... here. Call it.
(find_func_aliases_for_call): Likewise.
re PR fortran/48112 (generic interface to external function in module)
2011-04-28 Tobias Burnus <burnus@net-b.de>
PR fortran/48112
* resolve.c (resolve_fl_var_and_proc): Print diagnostic of
function results only once.
(resolve_symbol): Always resolve function results.
Jan Hubicka [Wed, 27 Apr 2011 17:28:51 +0000 (17:28 +0000)]
inline-9.c: New testcase.
* testsuite/gcc.dg/tree-ssa/inline-9.c: New testcase.
* ipa-inline.h (struct inline_edge_summary): Add predicate pointer.
* ipa-inline-analysis.c: Include alloc-pool.h.
(edge_predicate_pool): New.
(trye_predicate_p): New function
(false_predicate_p): New function.
(add_clause): Sanity check that false clauses are "optimized";
never add clauses to predicate that is already known to be false.
(and_predicate): Use flase_predicate_p.
(evaulate_predicate): Rename to ...
(evaluate_predicate): ... this one; update all callers; assert
that false is not listed among possible truths.
(dump_predicate): Use true_predicate_p.
(account_size_time): Use false_predicate_p.
(evaulate_conditions_for_edge): Rename to ...
(evaluate_conditions_for_edge) ... this one.
(edge_set_predicate): New function.
(inline_edge_duplication_hook): Duplicate edge predicates.
(inline_edge_removal_hook): Free edge predicates.
(dump_inline_edge_summary): Add INFO parameter; dump
edge predicates.
(dump_inline_summary): Update.
(estimate_function_body_sizes): Set edge predicates.
(estimate_calls_size_and_time): Handle predicates.
(estimate_callee_size_and_time): Update.
(remap_predicate): Add toplev_predicate; update comment.
(remap_edge_predicates): New function.
(inline_merge_summary): Compute toplev predicate; update.
(read_predicate): New function.
(read_inline_edge_summary): Use it.
(inline_read_section): Likewise.
(write_predicate): New function.
(write_inline_edge_summary): Use it.
(inline_write_summary): Likewise.
(inline_free_summary): Free alloc pool and edge summary vec.
* config/spu/divmovti4.c (union qword_UTItype): New data type.
(si_from_UTItype, si_to_UTItype): New functions.
(__udivmodti4): Use them to implement type-punning.
* config/spu/multi3.c (union qword_TItype): New data type.
(si_from_TItype, si_to_TItype): New functions.
(__multi3): Use them to implement type-punning.
* config/frv/frv.h (enum reg_class): Delete EVEN_ACC_REGS,
ACC_REGS, FEVEN_REGS, FPR_REGS, EVEN_REGS.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Likewise.
(EVEN_ACC_REGS): New macro. Alias for QUAD_ACC_REGS.
(ACC_REGS): New macro. Alias for QUAD_ACC_REGS.
(FEVEN_REGS): New macro. Alias for QUAD_ACC_REGS.
(FPR_REGS): New macro. Alias for QUAD_ACC_REGS.
(EVEN_REGS): New macro. Alias for QUAD_REGS.
* config/frv/frv.c (frv_secondary_reload_class): Remove use of
duplicate register classes.
(frv_class_likely_spileld_p): Likewise.
(frv_register_move_cost): Likewise.
Jan Hubicka [Tue, 26 Apr 2011 22:05:50 +0000 (00:05 +0200)]
cgraphbuild.c (build_cgraph_edges): Update call of cgraph_create_edge and cgraph_create_indirect_edge.
* cgraphbuild.c (build_cgraph_edges): Update call
of cgraph_create_edge and cgraph_create_indirect_edge.
* cgraph.c (cgraph_create_edge_including_clones,
cgraph_create_edge_1, cgraph_allocate_init_indirect_info,
cgraph_update_edges_for_call_stmt_node): Do not take nest
argument; do not initialize call_stmt_size/time.
(dump_cgraph_node): Do not dump nest.
(cgraph_clone_edge): Do not take loop_nest argument;
do not propagate it; do not clone call_stmt_size/time.
(cgraph_clone_node): Likewise.
(cgraph_create_virtual_clone): Update.
* cgraph.h (struct cgraph_edge): Remove
call_stmt_size/call_stmt_time/loop_nest.
(cgraph_create_edge, cgraph_create_indirect_edge,
cgraph_create_edge_including_clones, cgraph_clone_node): Update
prototype.
* tree-emutls.c (gen_emutls_addr): Update.
* ipa-inline-transform.c (update_noncloned_frequencies): Do not handle
loop_nest; handle indirect calls, too.
(clone_inlined_nodes): Do not care about updating inline summaries.
* cgraphunit.c (cgraph_copy_node_for_versioning): Update.
* lto-cgraph.c (lto_output_edge, input_node, input_edge): Do not
stream call_stmt_size/call_stmt_time/loop_nest.
* ipa-inline.c (edge_badness): Update.
(ipa_inline): dump summaries after inlining.
* ipa-inline.h (struct inline_edge_summary, inline_edge_summary_t):
new.
(inline_edge_summary): New function.
* ipa-inline-analysis.c (edge_duplication_hook_holder): New holder.
(inline_edge_removal_hook): Handle edge summaries.
(inline_edge_duplication_hook): New hook.
(inline_summary_alloc): Alloc hooks.
(initialize_growth_caches): Do not register removal hooks.
(free_growth_caches); Do not free removal hook.
(dump_inline_edge_summary): New function.
(dump_inline_summary): Use it.
(estimate_function_body_sizes, estimate_edge_size_and_time): Update.
(inline_update_callee_summaries): New function.
(inline_merge_summary): Use it.
(do_estimate_edge_time, do_estimate_edge_growth): Update.
(read_inline_edge_summary): New function.
(inline_read_section): Use it.
(write_inline_edge_summary): New function.
(inline_write_summary): Use it.
(inline_free_summary): Free edge new holders.
* tree-inline.c (copy_bb): Update.
Thomas Koenig [Tue, 26 Apr 2011 18:39:55 +0000 (18:39 +0000)]
frontend-passes.c (inserted_block): New variable.
2011-04-26 Thomas Koenig <tkoenig@gcc.gnu.org>
* frontend-passes.c (inserted_block): New variable.
(changed_statement): Likewise.
(create_var): Encase statement to be operated on in a BLOCK.
Adjust code insertion for BLOCK.
(cfe_code): Set inserted_block and changed_statement to NULL.
Jakub Jelinek [Tue, 26 Apr 2011 13:33:49 +0000 (15:33 +0200)]
re PR tree-optimization/48734 (ICE in eliminate_redundant_comparison, at tree-ssa-reassoc.c:1321)
PR tree-optimization/48734
* tree-ssa-reassoc.c (eliminate_redundant_comparison): Give up
if return value from maybe_fold_*_comparsions isn't something
the code is prepared to handle.
Richard Biener [Tue, 26 Apr 2011 10:12:14 +0000 (10:12 +0000)]
re PR tree-optimization/48694 (possible memory hog bug)
2011-04-26 Richard Guenther <rguenther@suse.de>
PR middle-end/48694
* tree.h (OEP_CONSTANT_ADDRESS_OF): New operand_equal_flag.
* fold-const.c (operand_equal_p): For TREE_CONSTANT ADDR_EXPRs
compare the operands with OEP_CONSTANT_ADDRESS_OF. Treat
trees with TREE_SIDE_EFFECTS equal when OEP_CONSTANT_ADDRESS_OF
is set.
* gcc.dg/torture/pr48694-1.c: New testcase.
* gcc.dg/torture/pr48694-2.c: Likewise.
Richard Guenther [Tue, 26 Apr 2011 09:21:44 +0000 (09:21 +0000)]
re PR tree-optimization/48694 (possible memory hog bug)
2011-04-26 Richard Guenther <rguenther@suse.de>
PR middle-end/48694
* tree.h (OEP_CONSTANT_ADDRESS_OF): New operand_equal_flag.
* fold-const.c (operand_equal_p): For TREE_CONSTANT ADDR_EXPRs
compare the operands with OEP_CONSTANT_ADDRESS_OF. Treat
trees with TREE_SIDE_EFFECTS equal when OEP_CONSTANT_ADDRESS_OF
is set.
* gcc.dg/torture/pr48694-1.c: New testcase.
* gcc.dg/torture/pr48694-2.c: Likewise.