* config/epiphany/epiphany.h (ASM_DECLARE_FUNCTION_SIZE): Redefine,
adding __forwarder_dst__ prefix if a forwarder_section attribute is
present.
(epiphany_function_type): Replace types for specific interrupts with
EPIPHANY_FUNCTION_INTERRUPT.
(EPIPHANY_INTERRUPT_P): Update.
* config/epiphany/epiphany.c (epiphany_handle_forwarder_attribute):
New static function.
(epiphany_attribute_table) <interrupt>: min_len is 0, max_len is 9.
<disinterrupt>: Affects type identity.
(epiphany_handle_interrupt_attribute): Handle variable number of
arguments.
(epiphany_compute_function_type): Update for new
epiphany_function_type definition.
(epiphany_expand_prologue): Don't save (reg:DI GPR_0) for interrupt
handlers with a longcall forwarder.
(epiphany_start_function): Handle multiple interrupt arguments and/or
forwarder_section attribute.
Bill Schmidt [Mon, 6 Feb 2012 21:39:34 +0000 (21:39 +0000)]
re PR tree-optimization/50969 (17% degradation in 168.wupwise for interleave via permutation)
2012-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/50969
* tree-vect-stmts.c (vect_model_store_cost): Correct statement cost to
use vec_perm rather than vector_stmt.
(vect_model_load_cost): Likewise.
* config/i386/i386.c (ix86_builtin_vectorization_cost): Change cost of
vec_perm to be the same as other vector statements.
* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Revise
cost of vec_perm for TARGET_VSX.
François Dumont [Mon, 6 Feb 2012 20:19:44 +0000 (20:19 +0000)]
2012-02-06 François Dumont <fdumont@gcc.gnu.org>
* include/debug/safe_iterator.h
(_Safe_iterator::_M_before_dereferenceable): Avoid the expensive
creation of a _Safe_iterator instance to do the check.
re PR tree-optimization/52115 (ICE: verify_ssa failed (missing definition for SSA_NAME))
2012-02-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/52115
* tree-sra.c (access_has_replacements_p): New function.
(sra_modify_assign): Use it to decide whether a use is uninitialized.
re PR tree-optimization/50955 (IVopts incorrectly rewrite the address of a global memory access into a local form.)
2012-02-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/50955
* tree-ssa-loop-ivopts.c (get_computation_cost_at): Artificially
raise cost of expressions that replace an address with an
expression based on a different pointer.
Thomas Koenig [Sun, 5 Feb 2012 20:14:00 +0000 (20:14 +0000)]
re PR fortran/48847 (Wrong "unused parameter" warning with interface block)
2012-02-05 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/48847
* trans-decl.c: Warn about unused dummy procedure arguments
if -Wunused-dummy-argument is specified. Suppress middle-end
warnings about procedure arguments.
2012-02-05 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/48847
* gfortran.dg/warn_unused_dummy_argument_3.f90: New test.
Paul Thomas [Sun, 5 Feb 2012 19:56:09 +0000 (19:56 +0000)]
re PR fortran/52102 ([OOP] Wrong result with ALLOCATE of CLASS components with array constructor SOURCE-expr)
2012-02-05 Paul Thomas <pault@gcc.gnu.org>
* trans-array.c (gfc_array_allocate): Zero memory for all class
array allocations.
* trans-stmt.c (gfc_trans_allocate): Ditto for class scalars.
PR fortran/52102
* trans-stmt.c (gfc_trans_allocate): Before correcting a class
array reference, ensure that 'dataref' points to the _data
component that is followed by the array reference..
2012-02-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/52102
* gfortran.dg/class_48.f90 : Add test of allocate class array
component with source in subroutine test3. Remove commenting
out in subroutine test4, since branching on unitialized variable
is now fixed (no PR for this last.).
gcc/
* reload1.c (reload_regs_reach_end_p): Replace with...
(reload_reg_rtx_reaches_end_p): ...this function.
(new_spill_reg_store): Update commentary.
(emit_input_reload_insns): Don't clear new_spill_reg_store here.
(emit_output_reload_insns): Check reload_reg_rtx_reaches_end_p
before setting new_spill_reg_store.
(emit_reload_insns): Use a separate loop to clear new_spill_reg_store.
Use reload_reg_rtx_reaches_end_p instead of reload_regs_reach_end_p.
Also use reload_reg_rtx_reaches_end_p when reading new_spill_reg_store
for non-spill reload registers.
Ira Rosen [Sun, 5 Feb 2012 05:58:18 +0000 (05:58 +0000)]
re PR tree-optimization/52091 (ICE: verify_gimple failed)
PR tree-optimization/52091
* tree-vectorizer.h (vect_is_simple_use): Add an argument.
(vect_is_simple_use_1): Likewise.
* tree-vect-loop.c (vectorizable_reduction): Update calls
to vect_is_simple_use_1 and vect_is_simple_use.
(vectorizable_live_operation): Likewise.
* tree-vect-patterns.c (widened_name_p,
vect_recog_vector_vector_shift_pattern, check_bool_pattern):
Likewise.
* tree-vect-stmts.c (process_use, vect_get_vec_def_for_operand,
vectorizable_call, vectorizable_conversion,
vectorizable_assignment, vectorizable_shift,
vectorizable_operation, vectorizable_store, vectorizable_load):
Likewise.
(vect_is_simple_cond): Add an argument, pass it to
vect_is_simple_use_1.
(vectorizable_condition): Update calls to vect_is_simple_cond,
vect_is_simple_use.
(vect_is_simple_use): Add an argument, the statement in which
OPERAND is used. Check that if OPERAND's def stmt is a double
reduction phi node, the use is a phi node too.
(vect_is_simple_use_1): Add an argument, pass it to
vect_is_simple_use.
* tree-vect-slp.c (vect_get_and_check_slp_defs): Update a call
to vect_is_simple_use.
Jakub Jelinek [Thu, 2 Feb 2012 08:09:37 +0000 (09:09 +0100)]
re PR tree-optimization/52073 (ICE: vector VEC(vec_void_p,base) index domain error, in vinfo_for_stmt at tree-vectorizer.h:620)
PR tree-optimization/52073
* tree-vect-stmts.c (vect_mark_relevant): When checking uses of
a pattern stmt for pattern uses, ignore uses outside of the loop.
Jonathan Wakely [Wed, 1 Feb 2012 00:20:08 +0000 (00:20 +0000)]
re PR libstdc++/49204 ([C++0x] remaining issues in <future>)
PR libstdc++/49204
* include/std/future (__future_base::_State_base::wait()): Use lambda
expression for predicate and remove redundant test.
(__future_base::_State_base::wait_for()): Return future_status and
use lambda expression for predicate.
(__future_base::_State_base::wait_until()): Likewise.
(__basic_future::wait_for(), __basic_future::wait_until()): Likewise.
(__future_base::_Async_state): Replace with _Async_state_common
class for non-dependent functionality and _Async_state_impl class
template for dependent functionality.
(__future_base::_Async_state_common::_M_join): Serialize attempts to
join thread.
(__future_base::_Async_state_common::_M_run_deferred): Join.
(__future_base::_Async_state::_M_do_run): Replace with lambda.
* src/c++11/future.cc (__future_base::_Async_state_common): Define
destructor, so key function is in the library.
* config/abi/pre/gnu.ver: Add exports for ~_Async_state_common.
* testsuite/30_threads/packaged_task/members/get_future.cc: Expect
future_status return instead of bool.
* testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
* testsuite/30_threads/future/members/wait_until.cc: Likewise.
* testsuite/30_threads/future/members/wait_for.cc: Likewise.
* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value3.cc: Likewise.
* testsuite/30_threads/promise/members/swap.cc: Likewise.
gcc/
* function.h (regno_reg_rtx): Adjust comment.
* reginfo.c (init_reg_modes_target): Only use the previous mode
if it fits within one register. Remove MIPS comment.
Tobias Burnus [Tue, 31 Jan 2012 18:41:47 +0000 (19:41 +0100)]
re PR fortran/52024 ([OOP] GENERIC operator cannot be resolved)
2012-01-31 Tobias Burnus <burnus@net-b.de>
PR fortran/52024
* gfortran.h (gfc_tbp_generic): Store whether the
generic is an operator.
* decl.c (gfc_match_generic): Set that flag.
* resolve.c (check_generic_tbp_ambiguity): Use it in the
gfc_compare_interfaces check.
Jason Merrill [Tue, 31 Jan 2012 17:41:24 +0000 (12:41 -0500)]
re PR c++/52043 ([C++0x] ICE: SIGSEGV in tsubst_copy (pt.c:12081) with -Wreturn-type)
PR c++/52043
* cp-tree.h (PACK_EXPANSION_LOCAL_P): New.
* pt.c (make_pack_expansion, tsubst_initializer_list): Set it.
(tsubst_pack_expansion): Check it.