* config/i386/sse.md (VI): New mode iterator.
(SSEMODEI): Remove.
(AVX256MODEI): Ditto.
(AVXMODEF4P): Ditto.
(avxvecpsmode): Ditto.
(one_cmpl<mode>2): Enable for TARGET_SSE. Use VI mode iterator.
(sse2_andnot<mode>3): New expander.
(*andnot<mode>3): Merge with *sse2_andnot<mode>3 and
*avx_andnot<mode>3. Enable for TARGET_SSE. Use VI mode iterator.
(<any_logic:code><mode>3): Use VI mode iterator.
(*<any_logic:code><mode>3): Merge with *sse2_<any_logic:code><mode>3
and *avx_<any_logic:code><mode>3. Use VI mode iterator.
(*andnottf3): Handle AVX three-operand constraints.
(*<any_logic:code>tf3): Handle AVX three-operand constraints.
Paolo Carlini [Mon, 11 Apr 2011 17:50:39 +0000 (17:50 +0000)]
moveable.cc: Actually run it in parallel-mode for check-parallel.
2011-04-11 Paolo Carlini <paolo.carlini@oracle.com>
* testsuite/25_algorithms/inplace_merge/moveable.cc: Actually run
it in parallel-mode for check-parallel.
* testsuite/25_algorithms/rotate/moveable.cc: Likewise.
* testsuite/25_algorithms/stable_partition/moveable.cc: Likewise.
* testsuite/25_algorithms/remove/moveable.cc: Likewise.
* testsuite/25_algorithms/sort_heap/check_compare_by_value.cc:
Likewise.
* testsuite/25_algorithms/unique/moveable.cc: Likewise.
* testsuite/25_algorithms/remove_if/moveable.cc: Likewise.
* testsuite/25_algorithms/heap/moveable.cc: Likewise.
* testsuite/25_algorithms/next_permutation/moveable.cc: Only skip
the tests based on std::lexicographical_compare for check-parallel.
* testsuite/25_algorithms/prev_permutation/moveable.cc: Likewise.
* config/i386/sse.md (VI_128): New mode iterator.
(VI12_128): Rename from SSEMODE12.
(VI14_128): Rename from SSEMODE14.
(VI124_128): New mode iterator.
(VI24_128): Rename from SSEMODE248.
(VI248_128): Rename from SSEMODE248.
(SSEMODE124C8): Remove.
(*<plusminus_insn><mode>3): Merge with *avx_<plusminus_insn><mode>3.
(*sse2_<plusminus_insn><mode>3): Merge with
*avx_<plusminus_insn><mode>3.
(*mulv8hi3): Merge with *avx_mulv8hi3.
(*<s>mulv8hi3_highpart): Merge with *avx_<s>mulv8hi3_highpart.
(*sse2_umulv2siv2di3): Merge with *avx_umulv2siv2di3.
(*sse2_pmaddwd): Merge with *avx_pmaddwd.
(*sse4_1_mulv4si3): Merge with *avx_mulv4si3.
(ashr<mode>3): Merge with *avx_ashr<mode>3.
(lshr<mode>3): Merge with *avx_lshr<mode>3.
(ashl<mode>3): Merge with *avx_ashl<mode>3.
(sse2_ashlv1ti3): Merge with *avx_ashlv1ti3.
(sse2_lshrv1ti3): Merge with *avx_lshrv1ti3.
(*sse4_1_<smaxmin:code><mode>3): Merge with *avx_<smaxmin:code><mode>3.
(*<smaxmin:code>v8hi3): Ditto.
(*sse4_1_<umaxmin:code><mode>3): Merge with *avx_<umaxmin:code><mode>3.
(*<smaxmin:code>v16qi3): Ditto.
(*sse4_1_eqv2di3): Merge with *avx_eq<mode>3.
(*sse2_eq<mode>3): Ditto.
(*sse4_2_eqv2di3): Merge with *avx_gt<mode>3.
(*sse2_gt<mode>3): Ditto.
(vcondv2di): Split out of vcond<mode>.
(vconduv2di): Split out of vcondu<mode>.
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
2011-04-11 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* simplify.c (simplify_bound_dim): Exit for
ucobound's last dimension unless -fcoarray=single.
* trans-array (gfc_conv_descriptor_size_1): Renamed from
gfc_conv_descriptor_size, made static, has now from_dim and
to_dim arguments.
(gfc_conv_descriptor_size): Call gfc_conv_descriptor_size.
(gfc_conv_descriptor_cosize): New function.
* trans-array.h (gfc_conv_descriptor_cosize): New prototype.
* trans-intrinsic.c (conv_intrinsic_cobound): Add input_location
and handle last codim of ucobound for when -fcoarray is not "single".
Richard Guenther [Mon, 11 Apr 2011 15:47:30 +0000 (15:47 +0000)]
stor-layout.c (layout_type): Compute all array index size operations in the original type.
2011-04-11 Richard Guenther <rguenther@suse.de>
* stor-layout.c (layout_type): Compute all array index size operations
in the original type.
(initialize_sizetypes): Add comment.
(set_sizetype): Do not set TREE_TYPE of a TREE_VEC.
c-family/
* c-common.c (complete_array_type): Build a range type of
proper type.
Martin Jambor [Mon, 11 Apr 2011 14:25:55 +0000 (16:25 +0200)]
re PR tree-optimization/48195 (ICE: vector VEC(ipa_node_params_t,base) index domain error, in ipa_analyze_node at ipa-prop.c:1525 with -flto --param partial-inlining-entry-probability=101)
2011-04-11 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/48195
* ipa-cp.c (ipcp_driver): Call ipa_check_create_node_params and
ipa_check_create_edge_args.
(ipcp_generate_summary): Do not call ipa_check_create_node_params and
ipa_check_create_edge_args.
* ipa-inline.c (inline_generate_summary): Do not call
ipa_check_create_node_params and ipa_check_create_edge_args.
* ipa-prop.c (ipa_analyze_node): Call ipa_check_create_node_params and
ipa_check_create_edge_args.
Jim Meyering [Sun, 10 Apr 2011 18:13:23 +0000 (18:13 +0000)]
Avoid memory overrun in a test leading to potential double-free.
2011-04-10 Jim Meyering <meyering@redhat.com>
Avoid memory overrun in a test leading to potential double-free.
* testsuite/test-expandargv.c (writeout_test): Fix off-by-one error:
i.e., do copy the trailing NUL byte.
Thomas Koenig [Fri, 8 Apr 2011 21:46:08 +0000 (21:46 +0000)]
re PR fortran/48448 (Implement -f(no-)frontend-optimization)
2011-04-08 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/48448
* gfortran.h (gfc_option_t): Add warn_function_elimination and
flag_frontend_optimize.
* lang.opt (Wfunction-elimination): Add.
(ffrontend-optimize): Add.
* invoke.texi: Add documentation for -Wfunction-elimination
and -ffrontend-optimize. Add -faggressive-function-elimination
to list of code generation options.
* frontend-passes.c (gfc_run_passes): Run optimizations if
flag_frontend_optimize is set.
(warn_function_elimination): New function.
(cfe_expr_0): Call it if requested to do so.
* options.c (gfc_init_options): Initiate warn_function_elimination
and flag_frontend_optimize.
(gfc_post_options): Set flag_frontend_optimize if not specified
by user, depending on the optimization level.
(gfc_handle_option): Handle -Wfunction-elimination and
-ffrontend-optimize.
2011-04-08 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/48448
* gfortran.dg/function_optimize_5.f90: New test.
Eric Botcazou [Fri, 8 Apr 2011 20:30:14 +0000 (20:30 +0000)]
decl.c (gnat_to_gnu_entity): Set minimum alignment on fields of the RETURN type built for the Copy-In...
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set minimum
alignment on fields of the RETURN type built for the Copy-In Copy-Out
mechanism.
gengtype.c (write_typed_alloc_def): New argument f.
2011-04-08  Basile Starynkevitch  <basile@starynkevitch.net>
* gengtype.c (write_typed_alloc_def): New argument f. Use it instead
of header_file.
(write_typed_struct_alloc_def, write_typed_typedef_alloc_def)
(write_typed_alloc_defns): Likewise.
(main): Calls write_typed_alloc_defns with output_header.
re PR libstdc++/4435 (Object file has undefined basic_string symbol as local.)
2011-04-08 Vladimir Makarov <vmakarov@redhat.com>
PR 4435
* ira-color.c (setup_profitable_hard_regs): Add comments.
Don't take prohibited hard regs into account.
(setup_conflict_profitable_regs): Rename to
get_conflict_profitable_regs.
(check_hard_reg_p): Check prohibited hard regs.
re PR target/48366 (ICE in extract_constrain_insn_cached, at recog.c:2024)
PR target/48366
* config/pa/pa.c (hppa_register_move_cost): Increase to 18 cost of
move from floating point to shift amount register .
(emit_move_sequence): Remove secondary reload support for floating
point to shift amount amount register copies.
(pa_secondary_reload): Return GENERAL_REGS for floating point/shift
amount register copies.
* config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): For shift amount
register, return false if mode isn't a scalar integer mode.
* config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Likewise.
re PR rtl-optimization/48272 (internal compiler error: in setup_insn_reg_pressure_info, at haifa-sched.c:1124)
PR rtl-optimization/48272
* sched-deps.c (setup_insn_reg_pressure_info): Export and rename to
init_insn_reg_pressure_info. Adjust a caller.
* sched-int.h (init_insn_reg_pressure_info): Declare.
* haifa-sched.c (haifa_init_insn): Call init_insn_reg_pressure_info
when sched-pressure is enabled.
re PR lto/48467 ([LTO] Anomalous behavior of -save-temps)
2011-04-08 Richard Guenther <rguenther@suse.de>
PR lto/48467
* toplev.c (lang_dependent_init): Do not open asm_out_file
in WPA mode, nor perform debug machinery initialization.
(finalize): Do not unlink asm_out_file in WPA mode.
re PR rtl-optimization/48235 (ICE: SIGSEGV in has_dependence_p (sel-sched-ir.c:3263) with -fselective-scheduling2 and custom flags)
PR rtl-optimization/48235
* sel-sched.c (code_motion_process_successors): Recompute the last
insn in basic block if control flow changed.
(code_motion_path_driver): Ditto. Recompute the first insn as well.
Update condition for ilist_remove.
re PR rtl-optimization/48302 (ICE: SIGSEGV in reposition_prologue_and_epilogue_notes (function.c:5662) with -fcrossjumping -fselective-scheduling2)
PR rtl-optimization/48302
* sel-sched-ir.h (sel_add_loop_preheaders): Update prototype.
* sel-sched-ir.c (sel_add_loop_preheaders): Add 'bbs' argument. Use
it to record added preheader blocks.
* sel-sched.c (setup_current_loop_nest): Add 'bbs' argument. Pass it
on to sel_add_loop_preheaders.
(sel_region_init): Move call to setup_current_loop_nest after
sel_init_bbs.
re PR target/48273 (ICE: in create_copy_of_insn_rtx, at sel-sched-ir.c:5604 with -fsel-sched-pipelining -fselective-scheduling2 -march=core2)
PR target/48273
* cfgloop.h (loop_has_exit_edges): New helper.
* sel-sched-ir.c (init_global_and_expr_for_insn): Make CALLs
non-clonable.
* sel-sched.c (sel_setup_region_sched_flags): Don't pipeline loops
that have no exit edges.
Jakub Jelinek [Fri, 8 Apr 2011 11:38:19 +0000 (13:38 +0200)]
re PR tree-optimization/48377 (miscompilation at -O3)
PR tree-optimization/48377
* tree-vect-data-refs.c (vector_alignment_reachable_p): Set
is_packed to true even for types with smaller TYPE_ALIGN than
TYPE_SIZE.
arm-protos.h (arm_attr_length_push_multi): New prototype.
* config/arm/arm-protos.h (arm_attr_length_push_multi): New prototype.
* config/arm/arm.c (arm_attr_length_push_multi): New function.
* config/arm/arm.md (*push_multi): Change the length computation to
call a C function.
Jason Merrill [Fri, 8 Apr 2011 06:08:21 +0000 (02:08 -0400)]
re PR c++/48481 (C++ overloading memory hog)
PR c++/48481
* tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
at the end of the chain.
* pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
(iterative_hash_template_arg): Likewise.
Jason Merrill [Thu, 7 Apr 2011 21:47:38 +0000 (17:47 -0400)]
re PR c++/48450 ([C++0x][SFINAE] Hard errors with static_cast expressions)
PR c++/48450
* typeck.c (check_for_casting_away_constness): Take complain.
(build_static_cast_1, build_reinterpret_cast_1): Pass it.
(build_const_cast_1): Pass it. Take full complain parm.
(build_const_cast, cp_build_c_cast): Adjust.
Jason Merrill [Thu, 7 Apr 2011 21:47:17 +0000 (17:47 -0400)]
init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top level.
* init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
level.
(perform_member_init): Not here.
* typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
case to templates.
(abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
* config/i386/sse.md: Update copyright year.
(avxcvtvecmode): Remove.
(sse_movhlps): Merge with *avx_movhlps.
(sse_movlhps): Merge with *avx_movlhps.
(vec_interleave_highv4sf): Merge with *avx_interleave_highv4sf.
(vec_interleave_lowv4sf): Merge with *avx_interleave_lowv4sf.
(sse_shufps_<mode>): Merge with *avx_shufps_<mode>.
(sse_loadhps): Merge with *avx_loadhps.
(sse_storelps): Merge with *avx_storelps.
(sse_loadlps): Merge with *avx_loadlps.
(sse_movss): Merge with *avx_movss.
(*vec_concatv2sf_sse4_1): Merge with *vec_concatv2sf_avx.
(*vec_concatv4sf_sse): Merge with *vec_concatv4sf_avx.
(*vec_set<mode>_0_sse4_1): Merge with *vec_set<mode>_0_avx.
(*vec_set<mode>_0_sse2): Split multi-unit alternative.
(vec_set<mode>_0): Ditto.
(*vec_setv4sf_sse4_1): Merge with *vec_setv4sf_avx.
(sse4_1_insertps): Merge with *avx_insertps.
(*sse3_interleave_highv2df): Merge with *avx_interleave_highv2df.
(*sse3_interleave_lowv2df): Merge with *avx_interleave_lowv2df.
(vec_interleave_highv2di): Merge with *avx_interleave_highv2di.
(sse2_shufpd_<mode>): Merge with *avx_shufpd_<mode>.
(sse2_storehpd): Merge with *avx_storehpd.
(sse2_loadhpd): Merge with *avx_loadhpd.
(sse2_loadlpd): Merge with *avx_loadlpd.
(sse2_movsd): Merge with *avx_movsd.
(*vec_concatv2df): Merge with *vec_concatv2df.
Jakub Jelinek [Thu, 7 Apr 2011 17:58:05 +0000 (19:58 +0200)]
re PR debug/48343 (ICE compiling i586 linux-2.6.38/drivers/staging/wlan-ng/p80211wep.c: in form_sum, at reload.c:5338)
PR debug/48343
* combine.c (combine_instructions): Add last_combined_insn,
update it if insn is after it, pass it to all try_combine
calls.
(try_combine): Add last_combined_insn parameter, pass it instead of
i3 to propagate_for_debug.
Jakub Jelinek [Thu, 7 Apr 2011 17:57:26 +0000 (19:57 +0200)]
re PR debug/48343 (ICE compiling i586 linux-2.6.38/drivers/staging/wlan-ng/p80211wep.c: in form_sum, at reload.c:5338)
PR debug/48343
* combine.c (combine_instructions): Add last_combined_insn,
update it if insn is after it, pass it to all try_combine
calls.
(try_combine): Add last_combined_insn parameter, pass it instead of
i3 to propagate_for_debug.