Alexandre Oliva [Sat, 21 Nov 2009 05:04:30 +0000 (05:04 +0000)]
re PR tree-optimization/42078 (ICE in gimple_assign_set_rhs_code)
gcc/ChangeLog:
PR tree-optimization/42078
* gimple.h (gimple_replace_lhs): New declaration.
* gimple.c (gimple_replace_lhs): New function.
* tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
modifying the call.
gcc/testsuite/ChangeLog:
PR tree-optimization/42078
* gcc.dg/pr42078.c: New test.
Andy Hutchinson [Sat, 21 Nov 2009 01:34:51 +0000 (01:34 +0000)]
re PR c/42114 (c99-stdint test fails for ptrdiff test)
PR Testsuite/42114
* gcc-dg/c99-stdint-1.c: Condition test for target without signal.h. XFAIL ptrdiff range test for avr.
* gcc-dg/c99-stdint-2.c: XFAIL for avr target.
* gcc-dg/c99-stdint-5.c: Condition test for target without signal.h.
* gcc-dg/c99-stdint-6.c: Ditto.
* config/i386/i386-builtin-types.awk: New file.
* config/i386/i386-builtin-types.def: New file.
* config/i386/t-i386: Use them to build i386-builtin-types.inc.
* config/i386/i386.c: Include it.
(ix86_builtin_type_tab, ix86_get_builtin_type): New.
(ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
(struct builtin_isa): Remove GTY marker. Replace tree type with
ix86_builtin_func_type; add set_and_not_built_p.
(def_builtin): Change type parameter to tcode; use
ix86_get_builtin_func_type; update all callers. Accept zero mask
to mean the builtin is unconditionally available.
(ix86_add_new_builtins): Use set_and_not_built_p instead of type
being set to NULL.
(enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
Update some users to rationalized enumeration codes from new include.
(enum multi_arg_type): Remove. Replace all enumeration values
with defines to new ix86_builtin_func_type.
(ix86_init_mmx_sse_builtins): Don't build any types here. Defer
all type resolution to def_builtin.
(ix86_init_builtin_types): Split out from ...
(ix86_init_builtins): ... here. Use ix86_get_builtin_func_type.
Simon Martin [Fri, 20 Nov 2009 21:37:23 +0000 (21:37 +0000)]
re PR c++/38646 (ICE with invalid specialization of variadic template)
gcc/cp/
2009-11-20 Simon Martin <simartin@users.sourceforge.net>
PR c++/38646
* pt.c (process_partial_specialization): Do not turn wrongly located
parameter pack arguments into error_mark_node.
Split too long lines into two.
gcc/testsuite/
2009-11-20 Simon Martin <simartin@users.sourceforge.net>
gcc/testsuite:
* gcc.dg/c99-stdint-6.c: Set dg-options for alpha*-dec-osf5*.
Wrap *int_least*_t tests in !NO_LEAST_TYPES.
Wrap *intmax_t tests in !NO_MAX_TYPES.
PR c++/29017
* cp-tree.h (composite_pointer_operation): New type.
(composite_pointer_type): Adjust prototype with new argument.
* typeck.c (composite_pointer_type): Accept
composite_pointer_operation as argument and emit diagnostic to be
visible to gettext and checked at compile time.
(composite_pointer_type_r): Likewise.
(common_pointer_type): Update call to composite_pointer_type.
(cp_build_binary_op): Likewise.
* call.c (build_conditional_expr): Likewise.
Paul Thomas [Fri, 20 Nov 2009 06:43:13 +0000 (06:43 +0000)]
re PR fortran/42104 ([F03] runtime segfault with procedure pointer component)
2009-11-20 Paul Thomas <pault@gcc.gnu.org>
Janus Weil <janus@gcc.gnu.org>
PR fortran/42104
* trans-expr.c (gfc_conv_procedure_call): If procedure pointer
component call, use the component's 'always_explicit' attr
for array arguments.
2009-11-20 Paul Thomas <pault@gcc.gnu.org>
Janus Weil <janus@gcc.gnu.org>
PR fortran/42104
* gfortran.dg/proc_ptr_comp_23.f90 : New test.
Co-Authored-By: Janus Weil <janus@gcc.gnu.org>
From-SVN: r154358
Jason Merrill [Fri, 20 Nov 2009 05:03:21 +0000 (00:03 -0500)]
re PR c++/42115 (r154072 & r154073 break build of ppl, non-placement deallocation issue)
PR c++/42115
* call.c (build_op_delete_call): Don't complain about using
op delete (void *, size_t) for placement delete if there's an
op delete (void *).
Rafael Espindola [Thu, 19 Nov 2009 20:22:53 +0000 (20:22 +0000)]
[multiple changes]
2009-11-19 Rafael Avila de Espindola <espindola@google.com>
* g++.dg/plugin/selfassign.c: Include plugin-version.h.
(plugin_init): Pass correct version to plugin_default_version_check.
* gcc.dg/plugin/ggcplug.c: Include plugin-version.h.
(plugin_init): Pass correct version to plugin_default_version_check.
* gcc.dg/plugin/selfassign.c: Include plugin-version.h.
(plugin_init): Pass correct version to plugin_default_version_check.
2009-11-19 Basile Starynkevitch <basile@starynkevitch.net>
Rafael Avila de Espindola <espindola@google.com>
* doc/plugins.texi (Plugin initialization): Added advices for
retrieving the version of GCC at plugin compilation and loading
times.
Jason Merrill [Thu, 19 Nov 2009 16:59:05 +0000 (11:59 -0500)]
re PR c++/561 (std:unclear about Overloaded Function Pointer resolution)
PR c++/561
* decl.c (static_fn_type): Split out...
(revert_static_member_fn): ...from here.
* cp-tree.h: Declare it.
* class.c (resolve_address_of_overloaded_function): Use it to compare
pointers to member functions.
* typeck.c (build_static_cast_1): Call instantiate_type.
* include/parallel/partition.h (__parallel_partition): Correctly
initialize chunk size.
(__parallel_nth_element): Respect nth_element_minimal_n. Use
sequential nth_element as base case, instead of sequential sort.
Jerry DeLisle [Thu, 19 Nov 2009 04:50:04 +0000 (04:50 +0000)]
re PR fortran/42090 (I/O: Problems when reading partial records in formatted direct access files)
2009-11-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/42090
* io/transfer.c (skip_record): Set bytes_left_subrecord to zero after
skipping the remaining bytes in the record.
(next_record_r): Call skip_record with the number of bytes_left to be
skipped.
Martin Jambor [Wed, 18 Nov 2009 14:10:02 +0000 (15:10 +0100)]
ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
2009-11-18 Martin Jambor <mjambor@suse.cz>
* ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
(lto_ipa_fixup_call_notes): Declare.
* ipa-prop.c (ipa_note_param_call): Store gimple uid.
(update_call_notes_after_inlining): Copy call stmt uid to the new
edge.
(ipa_write_param_call_note): New function.
(ipa_read_param_call_note): New function
(ipa_write_node_info): Write also param call notes. Removed a bogus
comment, reformatted to fit 80 columns.
(ipa_read_node_info): Read also param call notes. Removed a bogus
comment. Remove ipa_edge_args_vector growth.
(lto_ipa_fixup_call_notes): New function.
* ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
* ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
inlining regardless of flag_wpa.
(cgraph_decide_inlining_of_small_functions): Likewise.
(cgraph_decide_inlining): Likewise.
(inline_read_summary): Likewise.
Shujing Zhao [Wed, 18 Nov 2009 11:09:50 +0000 (11:09 +0000)]
re PR middle-end/22201 (Parameter description strings should all start with a capital letter)
2009-11-18 Shujing Zhao <pearly.zhao@oracle.com>
PR middle-end/22201
* params.def (PARAM_INLINE_UNIT_GROWTH)
PARAM_IPCP_UNIT_GROWTH)
(PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
(PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
(PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
(PARAM_MIN_INSN_TO_PREFETCH_RATIO)
(PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
description string.
* dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
unnecessarily.
(rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
Jakub Jelinek [Wed, 18 Nov 2009 09:53:52 +0000 (10:53 +0100)]
re PR c++/3187 (gcc lays down two copies of constructors)
PR c++/3187
* cgraph.h (struct cgraph_node): Add same_body and same_body_alias
fields.
(cgraph_same_body_alias, cgraph_remove_same_body_alias): New
prototypes.
* cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
cgraph_materialize_all_clones): Handle same_body aliases.
* cgraph.c (cgraph_allocate_node): New function.
(cgraph_create_node): Use it.
(cgraph_node_for_decl, cgraph_node, cgraph_get_node,
cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
(cgraph_same_body_alias, cgraph_remove_same_body_alias): New
functions.
* lto-cgraph.c (lto_output_node): Stream out same_body aliases.
(input_node): Stream in same_body aliases.
* lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
for same_body aliases.
(lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
* cp-tree.h (expand_or_defer_fn_1): New prototype.
* decl2.c (cp_write_global_declarations): Mark as !DECL_EXTERNAL
also all same_body aliases.
* semantics.c (expand_or_defer_fn): Move most of the function
except registering with cgraph to ...
(expand_or_defer_fn_1): ... here. New function.
* optimize.c: Include cgraph.h.
(maybe_clone_body): If in charge parm is not used and both base
and complete clones are created and are not comdat, tell cgraph
they have the same body.
* Make-lang.in (cp/optimize.o): Depend on $(CGRAPH_H).
* g++.dg/abi/mangle26.C: Also match *C2* definition.
* g++.dg/abi/mangle27.C: Likewise.
* g++.dg/abi/mangle28.C: Likewise.
* g++.dg/abi/mangle29.C: Likewise.
PR other/39888
* config/t-slibgcc-darwin: Fix embedded rpaths for
--enable-version-specific-runtime-libs, build extension stub
libs exposing features available from current libgcc_s.
Alexandre Oliva [Wed, 18 Nov 2009 06:02:26 +0000 (06:02 +0000)]
re PR debug/41888 (ICE from '-O -ftree-loop-distribution -fgraphite-identity -g')
PR debug/41888
PR debug/41886
* graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
are ok.
* graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
(try_generate_gimple_bb): Skip debug stmts when finding data refs.
* sese.c (sese_build_liveouts_bb): Skip debug stmts.
(sese_bad_liveouts_use): New.
(sese_reset_debug_liveouts_bb): New.
(sese_build_liveouts): Use it.
(rename_variables_in_stmt): Reset debug stmts rather than creating
new vars for them.
(expand_scalar_variable_stmt): Likewise.
Paolo Carlini [Tue, 17 Nov 2009 20:03:03 +0000 (20:03 +0000)]
re PR c++/42058 (Trouble with invalid array initialization)
cp/
2009-11-17 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/42058
* typeck2.c (digest_init_r): Check init for error_operand_p.
* decl.c (reshape_init_class): Check return value of reshape_init_r
for error_mark_node.
testsuite/
2009-11-17 Paolo Carlini <paolo.carlini@oracle.com>
Andrew Haley [Tue, 17 Nov 2009 18:05:00 +0000 (18:05 +0000)]
posix-threads.cc (park): Rewrite code to handle time.
2009-11-17 Andrew Haley <aph@redhat.com>
* posix-threads.cc (park): Rewrite code to handle time.
Move mutex lock before the call to compare_and_swap to avoid a
race condition.
Add some assertions.
(unpark): Add an assertion.
(init): Move here from posix-threads.h.
* include/posix-threads.h (destroy): removed.
Jason Merrill [Mon, 16 Nov 2009 23:29:25 +0000 (18:29 -0500)]
PR c++/13950, DR 176
PR c++/13950, DR 176
* search.c (lookup_field_r): Allow lookup to find the
injected-class-name from a template base.
(template_self_reference_p): Remove.
* decl.c (make_typename_type): Diagnose ambiguity. Use
maybe_get_template_decl_from_type_decl.
* parser.c (cp_parser_template_name): Pass true to is_template
rather than use maybe_get_template_decl_from_type_decl.
(cp_parser_lookup_name): Use maybe_get_template_decl_from_type_decl.
* pt.c (maybe_get_template_decl_from_type_decl): Handle ambiguity.
Use DECL_SELF_REFERENCE_P.
* parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
Avoid duplicate ambiguity error.
* error.c (dump_decl): Don't say "typedef" for injected-class-name.
* pt.c (convert_template_argument): Tweak logic.
Alexandre Oliva [Mon, 16 Nov 2009 20:18:33 +0000 (20:18 +0000)]
tree-cfg.c (gimple_redirect_edge_and_branch): Create the decl label for the new dest block on demand.
* tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
Create the decl label for the new dest block on demand. Require
a fallthrough edge if no asm labels were redirected.
Uros Bizjak [Mon, 16 Nov 2009 18:42:35 +0000 (19:42 +0100)]
i386.md (cbranchsi4): Use nonimmediate_operand for operand 1 predicate.
* config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
operand 1 predicate.
(cstoresi4): Ditto for operand 2.
(cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
patterns using SDWIM mode iterator.
(cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
using SWIM mode iterator.
(cmpdi_1): Rename from cmpdi_1_rex64.
(cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
SWI48 mode iterator.
(*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn using SWI
mode iterator.
(*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
(*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
(*cmpqi_ext_3_insn): Make private.
(*cmpqi_ext_3_insn_rex64): Make private.
(cmpstrnsi): Update for renamed cmpdi_1_rex64.
* config/i386/predicates.md (cmpsi_operand): Remove.
Alexandre Oliva [Mon, 16 Nov 2009 18:31:10 +0000 (18:31 +0000)]
configure.ac: Add libelf to host_libs.
* configure.ac: Add libelf to host_libs. Enable in-tree configury
of ppl and cloog. Fix in-tree configury of libelf, skip tests.
Fix portability of test of C++ as bootstrap language. Add
ppl/src/ppl-config.o to the bootstrap compare exclusion list.
* configure: Rebuild.
* Makefile.def: Drop host and target settings from gmp, mpfr, ppl,
and cloog. Fix in-tree ppl configuration. Introduce libelf
in-tree building.
* Makefile.tpl (POSTSTAGE1_CXX_EXPORT): New.
(POSTSTAGE1_HOST_EXPORTS): Use it.
(STAGE[+id+]_CXXFLAGS): New.
(BASE_FLAGS_TO_PASS): Pass it down.
(configure-stage[+id+]-[+prefix+][+module+]): Use it. Add
extra_exports.
(all-stage[+id+]-[+prefix+][+module+]): Likewise.
(configure-[+prefix+][+module+], all-[+prefix+][+module+]): Add
extra_exports.
* Makefile.in: Rebuild.
Jan Hubicka [Mon, 16 Nov 2009 16:06:29 +0000 (17:06 +0100)]
cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper ENTRY_BLOCK_PTR.
* cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper ENTRY_BLOCK_PTR.
* cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely zero out all
callees.
* cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for frequency and count match.
* ipa-inline.c (update_noncloned_frequencies): New function.
(cgraph_clone_inlined_nodes): Use it.
* tree-inline.c (copy_bb): Fix frequency scaling; output
diagnostic on frequency mismatches to dump file.
(initialize_cfun): Do not scale frequency; fix count scaling;
initialize entry and exit block frequencies; copy profile
info.
(copy_cfg_body): Use frequency_scale as argument;
fix count scaling.
(copy_body): Use frequency_scale as argument.
(expand_call_inline): Compute frequency scale and output diagnostic
to dump file.
(delete_unreachable_blocks_update_callgrah): Remove checking that
has to be done after edge redirection.
(tree_function_versioning): Update initialize_cfun and copy_body call.