Benjamin Kosnik [Fri, 16 Oct 2009 07:47:33 +0000 (07:47 +0000)]
re PR libstdc++/40654 ([C++0x] atomic.cc: 'd' is used uninitialized warning)
2009-10-15 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/40654
PR libstdc++/40826
* src/atomic.cc (atomic_flag_test_and_set_explicit): Add
static_cast from base to derived.
(atomic_flag_clear_explicit): Same.
* include/bits/atomic_2.h (__atomic2::atomic_flag): Public derivation.
Remove value type constructor.
* include/bits/atomic_0.h (__atomic0::atomic_flag): Same.
* include/std/future (_Future_state): Use ATOMIC_FLAG_INIT to
initialized the atomic_flag member.
Paul Thomas [Fri, 16 Oct 2009 06:07:09 +0000 (06:07 +0000)]
re PR fortran/41648 ([OOP] Type-bound procedures refused)
2009-10-16 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41648
PR fortran/41656
* trans-expr.c (select_class_proc): Convert the expression for the
vindex, carried on the first member of the esym list.
* gfortran.h : Add the vindex field to the esym_list structure.
and eliminate the class_object field.
* resolve.c (check_class_members): Remove the setting of the
class_object field.
(vindex_expr): New function.
(get_class_from_expr): New function.
(resolve_class_compcall): Call the above to find the ultimate
class or derived component. If derived, do not generate the
esym list. Add and expression for the vindex to the esym list
by calling the above.
(resolve_class_typebound_call): The same.
2009-10-16 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41648
* gfortran.dg/dynamic_dispatch_4.f03 : New test.
PR fortran/41656
* gfortran.dg/dynamic_dispatch_5.f03 : New test.
Jakub Jelinek [Thu, 15 Oct 2009 16:40:52 +0000 (18:40 +0200)]
dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type and DW_TAG_template_alias.
* dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
and DW_TAG_template_alias.
(dwarf_attr_name): Handle DW_AT_main_subprogram,
DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
and DW_AT_GNU_odr_signature.
(dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
DW_FORM_flag_present and DW_FORM_ref_sig8.
(output_signature): Only print name on the first byte.
(output_die): Likewise for dw_val_class_data8.
* include/dwarf2.h (DW_LANG_Python): Add comment that it is
a DWARF 4 addition.
Richard Guenther [Thu, 15 Oct 2009 16:04:29 +0000 (16:04 +0000)]
re PR lto/41668 (ICE in get_alias_set, at alias.c:698)
2009-10-15 Richard Guenther <rguenther@suse.de>
PR lto/41668
* gimple.c (compare_type_names_p): Handle anonymous names
differently based on new mode argument.
(gimple_types_compatible_p): For structs also compare the tags.
(iterative_hash_type_name): Rename to ...
(iterative_hash_name): ... this. Hash all names.
(iterative_hash_gimple_type): Fix hashing the struct tag of
pointer targets. Hash field decl names.
2009-10-15 Rafael Avila de Espindola <espindola@google.com>
* lto-plugin.c (resolution_file): New.
(free_1): Update comment.
(free_2): Free resolution_file.
(write_resolution): Write resolution to specified file. Use the
syms array from the symbol table.
(all_symbols_read_handler): Delay call to free_1 past call to
write_resolution.
(process_option): Add a -resolution option.
Jim Blandy [Thu, 15 Oct 2009 08:56:02 +0000 (08:56 +0000)]
2009-10-15 Jim Blandy <jimb@red-bean.com>
* libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, gettext, dgettext)
(dcgettext, ngettext, dngettext, dcngettext): Backport changes
from current gettext to provide GCC format_arg attributes.
Paolo Carlini [Thu, 15 Oct 2009 01:16:53 +0000 (01:16 +0000)]
basic_string.h (operator+=(initializer_list<>), [...]): Forward to the append overload taking a const CharT* pointer and a size...
2009-10-14 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/basic_string.h (operator+=(initializer_list<>),
append(initializer_list<>)): Forward to the append overload taking
a const CharT* pointer and a size, thus avoiding instantiating
unnecessarily in the built library the overload taking a pair of
iterators.
(operator=(initializer_list<>), assign(initializer_list<>)): Likewise
for assign.
(insert(iterator, initializer_list<>): Likewise for insert.
Paolo Carlini [Thu, 15 Oct 2009 00:01:05 +0000 (00:01 +0000)]
c++config: Do not disable extern templates for string in plain parallel-mode and in...
2009-10-14 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/c++config: Do not disable extern templates for string
in plain parallel-mode and in profile-mode; add comment explaining
_GLIBCXX_EXTERN_TEMPLATE == -1.
* testsuite/ext/profile/mutex_extensions.cc: Adjust dg-error line.
Paolo Carlini [Wed, 14 Oct 2009 23:50:09 +0000 (23:50 +0000)]
c++config: Do not disable extern templates for string in plain parallel-mode and in...
2009-10-14 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/c++config: Do not disable extern templates for string
in plain parallel-mode and in profile-mode; add comment explaining
_GLIBCXX_EXTERN_TEMPLATE == -1.
Jakub Jelinek [Wed, 14 Oct 2009 21:30:19 +0000 (23:30 +0200)]
stor-layout.c (place_field): Don't emit -Wpadded warnings for fields in builtin structs.
* stor-layout.c (place_field): Don't emit -Wpadded warnings for
fields in builtin structs.
(finalize_record_size): Likewise.
* obj-c++.dg/layout-1.mm: Don't xfail dg-bogus on lp64, change
line from 1 to 0.
* obj-c++.dg/bitfield-1.mm: Likewise.
* obj-c++.dg/bitfield-4.mm: Likewise.
Richard Guenther [Wed, 14 Oct 2009 18:39:45 +0000 (18:39 +0000)]
gimple.c (gtc_ob): New global.
2009-10-14 Richard Guenther <rguenther@suse.de>
* gimple.c (gtc_ob): New global.
(struct type_pair_d): Replace pointers with type UIDs.
(type_pair_hash): Adjust.
(type_pair_eq): Likewise.
(lookup_type_pair): Likewise. Allocate from an obstack.
(gimple_force_type_merge): Adjust.
(gimple_types_compatible_p): Likewise.
(free_gimple_type_tables): Free the obstack.
Vladimir Makarov [Wed, 14 Oct 2009 16:24:11 +0000 (16:24 +0000)]
params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
2009-09-26 Vladimir Makarov <vmakarov@redhat.com>
* params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
* params.h (IRA_LOOP_RESERVED_REGS): New
* tree-pass.h (pass_subregs_of_mode_init,
pass_subregs_of_mode_finish): Remove.
* passes.c (pass_subregs_of_mode_init,
pass_subregs_of_mode_finish): Remove.
(pass_reginfo_init): Move before loop optimizations.
* config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
* common.opt (fira-loop-pressure): New.
* toplev.h (flag_ira_loop_pressure): New.
* rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New
externals.
* reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
Make external and void type functions.
(gate_subregs_of_mode_init, pass_subregs_of_mode_init,
pass_subregs_of_mode_finish): Remove.
* ira-costs.c (init_costs): Call init_subregs_of_mode.
* regmove.c: Include ira.h.
(regmove_optimize): Call ira_set_pseudo_classes after IRA based
register pressure calculation in loops.
* loop-invariant.c: Include REGS_H and ira.h.
(struct loop_data): New members max_reg_pressure, regs_ref, and
regs_live.
(struct invariant): New member orig_regno.
(curr_loop): New variable.
(find_exits): Initialize regs_ref and regs_live.
(create_new_invariant): Initialize orig_regno.
(get_cover_class_and_nregs): New.
(get_inv_cost): Make aregs_needed an array. Use regs_needed as an
array. Add code for flag_ira_loop_pressure.
(gain_for_invariant): Make new_regs an array. Add code for
flag_ira_loop_pressure.
(best_gain_for_invariant): Ditto.
(set_move_mark): New parameter gain. Use it for debugging output.
(find_invariants_to_move): Make regs_needed and new_regs an array.
Add code for flag_ira_loop_pressure.
(move_invariant_reg): Set up orig_regno.
(move_invariants): Set up reg classes for pseudos for
flag_ira_loop_pressure.
(free_loop_data): Clear regs_ref and regs_live.
(curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
get_regno_cover_class, change_pressure, mark_regno_live,
mark_regno_death, mark_reg_store, mark_reg_clobber,
mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
(move_loop_invariants): Calculate pressure. Initialize curr_loop.
* ira.c (ira): Call ira_set_pseudo_classes after IRA based
register pressure calculation in loops if new regs were added.
Call finish_subregs_of_mode.
* opts.c (decode_options): Set up flag_ira_loop_pressure.
* Makefile.in (loop-invariant.o): Add ira.h.
(regmove.o): Ditto.
* doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
Describe.
* doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
Richard Guenther [Wed, 14 Oct 2009 14:14:44 +0000 (14:14 +0000)]
lto-symtab.c (lto_symtab_compatible): Fold in ...
2009-10-14 Richard Guenther <rguenther@suse.de>
* lto-symtab.c (lto_symtab_compatible): Fold in ...
(lto_symtab_merge): ... here. Rewrite both to take the
prevailing and a to-be-merged entry and to queue diagnostics
properly.
(lto_symtab_resolve_replaceable_p): New predicate for
symbol resolution.
(lto_symtab_resolve_can_prevail_p): Likewise.
(lto_symtab_resolve_symbols): Rewrite. Fold in code that
handles merging commons by choosing the largest decl. Fold
in code that gives ODR errors.
(lto_symtab_merge_decls_2): Simplify a lot. Emit queued
diagnostics here.
(lto_symtab_merge_decls_1): Re-structure. Deal with the
case of no prevailing decl here. Diagnose mismatches
in object types here. Drop all but the prevailing decls.
(lto_symtab_prevailing_decl): Return the single prevailing decl.
* lto-streamer-in.c (lto_input_tree_ref): Deal with
VIEW_CONVERT_EXPRs in decl slots. Unshare the tree in this case.
lto/
* lto.c (lto_fixup_tree): In case the prevailing decl is not
compatible with the one we replace wrap it around a
VIEW_CONVERT_EXPR.
Nick Clifton [Wed, 14 Oct 2009 12:05:33 +0000 (12:05 +0000)]
extended.texi: Replace the dash character with @minus{} in situations where it is being used...
* gcc/doc/extended.texi: Replace the dash character with
@minus{} in situations where it is being used as a minus
symbol.
* gcc/doc/tm.texi: Likewise.
* gcc/doc/invoke.texi: Likewise.
* gcc/doc/md.texi: Likewise.
* gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
(process_command): Handle -E as done with -c and -S. Do not add
the target executable suffix to the output file when -E is used.
(main): Adjust error message accordingly.
Kaz Kojima [Wed, 14 Oct 2009 00:17:51 +0000 (00:17 +0000)]
sh.c (TARGET_BUILTIN_DECL): Define.
* config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
(struct builtin_description): Add fndecl field.
(bdesc): Remove const qualifier. Update initializer.
(sh_media_init_builtins): Remove const qualifier for d. Record
the result of add_builtin_function to the fndecl field.
(sh_builtin_decl): New.
(sh_media_builtin_decl): New.
re PR tree-optimization/41377 (gimple EH rewrite causes ICE with PPRE (enabled at -O3))
PR tree-optimization/41377
* tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
(cleanup_empty_eh_merge_phis): New change_region parameter;
pass it on to redirect_eh_edge_1. Update callers.
(cleanup_empty_eh_unsplit): Don't require an existing EH label
at the destination block.
Janus Weil [Tue, 13 Oct 2009 16:12:24 +0000 (18:12 +0200)]
re PR fortran/41581 ([OOP] Allocation of a CLASS with SOURCE=<class> does not work)
2009-10-13 Janus Weil <janus@gcc.gnu.org>
PR fortran/41581
* decl.c (encapsulate_class_symbol): Add new component '$size'.
* resolve.c (resolve_allocate_expr): Move CLASS handling to
gfc_trans_allocate.
(resolve_class_assign): Replaced by gfc_trans_class_assign.
(resolve_code): Remove calls to resolve_class_assign.
* trans.c (gfc_trans_code): Use new function gfc_trans_class_assign.
* trans-expr.c (get_proc_ptr_comp): Fix a memory leak.
(gfc_conv_procedure_call): For CLASS dummies, set the
$size component.
(gfc_trans_class_assign): New function, replacing resolve_class_assign.
* trans-stmt.h (gfc_trans_class_assign): New prototype.
* trans-stmt.c (gfc_trans_allocate): Use correct size when allocating
CLASS variables. Do proper initialization. Move some code here from
resolve_allocate_expr.
2009-10-13 Janus Weil <janus@gcc.gnu.org>
PR fortran/41581
* gfortran.dg/class_allocate_2.f03: Modified.
* gfortran.dg/class_allocate_3.f03: New test case.
Richard Guenther [Tue, 13 Oct 2009 12:42:30 +0000 (12:42 +0000)]
re PR lto/41565 (-m32 causes an ICE when the object files were compiled with 64bit)
2009-10-13 Richard Guenther <rguenther@suse.de>
PR lto/41565
* opts.c (handle_option): Split out code to handle setting
the options flag var ...
(set_option): ... here.
* opts.h (set_option): Declare.
* lto-opts.c (register_user_option_p): Include -fexceptions
and all position independent code variants.
(handle_common_option): Remove.
(lto_reissue_options): Use set_option.
Martin Jambor [Tue, 13 Oct 2009 11:31:08 +0000 (13:31 +0200)]
re PR tree-optimization/41661 (ICE due to IPCP trying to create/fold a REAL typed comparision)
2009-10-13 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/41661
* ipa-prop.c (compute_complex_pass_through): Allow only operations
that are tcc_comparisons or do not change the type in any
un-usleless way.
* ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
folding tcc_comparison operations.
* testsuite/gcc.c-torture/compile/pr41661.c: New test.
Jason Merrill [Mon, 12 Oct 2009 21:04:27 +0000 (17:04 -0400)]
re PR c++/37766 ([C++0x] ICE with function's default reference template parameter)
PR c++/37766
* pt.c (type_unification_real): Call convert_template_argument
for function default template arguments.
(check_default_tmpl_args): Suggest -std=c++0x when function default
template args seen in C++98 mode.
Paolo Carlini [Mon, 12 Oct 2009 19:11:31 +0000 (19:11 +0000)]
random.h (class linear_congruential_engine, [...]): Do not use simulated concept checks...
2009-10-12 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/random.h (class linear_congruential_engine,
class mersenne_twister_engine, class subtract_with_carry_engine,
class discard_block_engine, class independent_bits_engine,
class shuffle_order_engine, class uniform_int_distribution,
class binomial_distribution, class geometric_distribution,
class negative_binomial_distribution, class poisson_distribution,
class discrete_distribution): Do not use simulated concept checks,
tidy startic_asserts on argument types and ranges.
(class uniform_real_distribution, class normal_distribution,
class lognormal_distribution, class gamma_distribution,
class chi_squared_distribution, class cauchy_distribution,
class fisher_f_distribution, class student_t_distribution,
class exponential_distribution, class weibull_distribution,
class extreme_value_distribution, class piecewise_linear_distribution,
class piecewise_constant_distribution): Add static_assert on
template argument type.
* include/std/random: Do not include <bits/concept_check.h>.
* testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc:
Fix.
* testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc:
Likewise.
* testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc:
Likewise.
* testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc:
Likewise.
* testsuite/26_numerics/random/discard_block_engine/cons/default.cc:
Likewise.
* testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc:
Likewise.
* testsuite/26_numerics/random/discard_block_engine/requirements/
typedefs.cc: Likewise.
* testsuite/26_numerics/random/discard_block_engine/operators/
equal.cc: Likewise.
* testsuite/26_numerics/random/discard_block_engine/operators/
serialize.cc: Likewise.
* testsuite/26_numerics/random/linear_congruential_engine/
requirements/non_uint_neg.cc: Tweak.
Janis Johnson [Mon, 12 Oct 2009 17:13:41 +0000 (17:13 +0000)]
re PR testsuite/41659 (FAIL: gcc.dg/lto/20090914-2 c_lto_20090914-2_0.o assemble, -O0 -fwhopr)
PR testsuite/41659
* gcc.dg/lto/20090914-2.c: Use dg-skip-if to skip test.
* lib/lto.exp (lto-get-options-main): Report error for using "target"
or "xfail" with dg-lto-dg.
Jakub Jelinek [Mon, 12 Oct 2009 13:35:03 +0000 (15:35 +0200)]
re PR target/41680 (ICE in trunc_int_for_mode)
PR target/41680
* config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
paradoxical subregs to prevent partial register stalls if the inner
mode is integer mode.
Uros Bizjak [Sun, 11 Oct 2009 21:49:10 +0000 (23:49 +0200)]
i386.md (SWIM): New mode iterator.
* config/i386/i386.md (SWIM): New mode iterator.
(mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
using SWIM mode iterator.
(x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
patterns using SWI48 mode iterator.
(*x86_mov<mode>cc_0_m1_se): Macroize insn from
*x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
(*x86_mov<mode>cc_0_m1_neg): New insn pattern.
(*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
patterns using SWI248 mode iterator.
* config/i386/i386.c (ix86_expand_int_movcc): Update the call to
gen_x86_movdicc_0_m1_rex64 for renamed function