Oleg Endo [Mon, 19 Jan 2015 22:35:53 +0000 (22:35 +0000)]
re PR target/53988 ([SH] tst Rm,Rn not used for QI/HImode)
gcc/
PR target/53988
* config/sh/sh-protos.h (sh_find_set_of_reg): Make sure not to return
nullptr for insn when reaching the first insn.
* config/sh/sh.c (sh_unspec_insn_p): Rewrite using subrtx_iterator.
(sh_insn_operands_modified_between_p): Add nullptr check.
(sh_find_extending_set_of_reg): Fix log message. Don't accept
sign extending mem load if the insn contains any UNSPEC or
UNSPEC_VOLATILE.
Martin Liska [Mon, 19 Jan 2015 22:02:04 +0000 (23:02 +0100)]
re PR ipa/64668 (internal compiler error: in compare_ssa_name, at ipa-icf-gimple.c:120)
Fix PR64668.
* objc/compile/pr64668.m: New test.
PR ipa/64668
* ipa-icf-gimple.c (func_checker::compare_operand): Call proper
function for second argument of OBJ_TYPE_REF.
David Malcolm [Mon, 19 Jan 2015 19:15:10 +0000 (19:15 +0000)]
Fix int vs bool issue in jit.dg/test-arith-overflow.c
gcc/testsuite/ChangeLog:
* jit.dg/test-arith-overflow.c: Include stdbool.h.
(create_overflow_fn): Update comment to clarify that
the third param of the created function is a bool *, not
an int *.
(verify_int_overflow_fn): Convert param "expected_ovf" from
int to bool. Update third param of "overflow_fn_type" from int *
to bool *. Update local "actual_ovf" from int to bool.
(verify_uint_overflow_fn): Likewise.
PR ada/64640
* adaint.c: Handle __CYGWIN__ like __MINGW32__ here.
* mingw32.h: Don't include <tchar.h> under cygwin.
(_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Set to _O_TEXT if not yet defined.
Martin Liska [Mon, 19 Jan 2015 15:20:16 +0000 (16:20 +0100)]
IPA ICF: add no_icf attribute.
* c-common.c (handle_noicf_attribute): New function.
* doc/extend.texi (no_icf): Add new attribute description.
* ipa-icf.c (sem_item_optimizer::merge_classes): Handle cases
where the pass attempts to merge a function with no_icf attribute.
* gcc.dg/ipa/ipa-icf-33.c: New test.
While looking at PR target/64532- I realized we haven't documented all
the register constraints. I'm not documenting the other immediate
constraints as it is not clear to me how much of that is actually
useful yet and I don't have the time this afternoon to clean this up.
Fei Yang [Mon, 19 Jan 2015 14:21:45 +0000 (14:21 +0000)]
* gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h
(buffer_float64x2, buffer_pad_float64x2): New helper variables.
* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h (hfloat64_t,
result_float64x2, expected_hfloat64x2): New helper type, variable and
declaration.
(buffer_float64x2, buffer_pad_float64x2): New helper variables.
* gcc.target/aarch64/advsimd-intrinsics/vfma.c: Don't run on target
without the FMA feature and exclude test for vfmaq_f64 on arm*-*-*.
* gcc.target/aarch64/advsimd-intrinsics/vfms.c: Don't run on target
without the FMA feature and exclude test for vfmsq_f64 on arm*-*-*.
* gcc.target/aarch64/advsimd-intrinsics/vfma_n.c: Don't run on arm*-*-*
and target without the FMA feature.
Igor Zamyatin [Mon, 19 Jan 2015 13:58:54 +0000 (13:58 +0000)]
re PR rtl-optimization/64081 (r217828 prevents RTL loop unroll)
gcc/
PR rtl-optimization/64081
* loop-iv.c (def_pred_latch_p): New function.
(latch_dominating_def): Allow specific cases with non-single
definitions.
(iv_get_reaching_def): Likewise.
(check_complex_exit_p): New function.
(check_simple_exit): Use check_complex_exit_p to allow certain cases
with exits not executing on any iteration.
gcc/testsuite/
PR rtl-optimization/64081
* gcc.dg/pr64081.c: New test.
Tejas Belagod [Mon, 19 Jan 2015 12:57:48 +0000 (12:57 +0000)]
re PR testsuite/63971 (Some of gcc.target/aarch64/test_frame_*.c tests fail now)
2015-01-19 Tejas Belagod <tejas.belagod@arm.com>
PR target/63971
* gcc.target/aarch64/test_frame_1.c: Expect only two loads of x30 (in
the epilogue).
* gcc.target/aarch64/test_frame_6.c: Likewise.
* gcc.target/aarch64/test_frame_2.c: Expect only one pair load of x30
and x19 (in the epilogue).
* gcc.target/aarch64/test_frame_4.c: Likewise.
* gcc.target/aarch64/test_frame_7.c: Likewise.
Ilya Enkovich [Mon, 19 Jan 2015 10:26:52 +0000 (10:26 +0000)]
ipa-chkp.c (chkp_produce_thunks): Add early param to split thunks production into two passes.
gcc/
* ipa-chkp.c (chkp_produce_thunks): Add early param
to split thunks production into two passes. Keep
'always_inline' function bodies after the first pass.
(pass_data_ipa_chkp_early_produce_thunks): New.
(pass_ipa_chkp_early_produce_thunks): New.
(pass_ipa_chkp_produce_thunks::execute): Adjust to new
chkp_produce_thunks signature.
(make_pass_ipa_chkp_early_produce_thunks): New.
* passes.def (pass_ipa_chkp_early_produce_thunks): New.
(pass_ipa_chkp_produce_thunks): Move after local optimizations.
* tree-pass.h (make_pass_ipa_chkp_early_produce_thunks): New.
* ipa-reference.c (set_reference_optimization_summary,
ipa_reference_get_not_written_global): Do nothing if ipa-reference is disabled.
(ignore_module_statics): New static var.
(propagate_bits): If ipa-reference is disabled, do not look into local properties.
(analyze_function): Disable analysis when ipa_reference is disabled.
(generate_summary): Do not dump when reference is disabled;
collect vars accessed from functions with ipa-reference disabled.
(get_read_write_all_from_node): When ipa-reference is disabled, use the
node flags.
(gate): Enable for LTO.
(ignore_edge_p): New function.
(propagate): Skip functions w/o ipa-reference analysis.
* optc-save-gen.awk: Handle optimize_debug correctly.
* opth-gen.awk: Likewise.
* common.opt (fauto-inc-dec, fdelete-dead-exceptions, ffunction-cse,
fgraphite, fstrict-volatile-bitfields, fira-algorithm, fira-region,
fira-share-save-slots, fira-share-spill-slots,
fmodulo-sched-allow-regmoves, fpartial-inlining,
sched-stalled-insns, fsched-stalled-insns-dep, fstrict-overflow,
ftracer, ftree-parallelize-loops, fassociative-math,
freciprocal-math, fvect-cost-model, fsimd-cost-model): Mark as
Optimization
(fauto-profile, fcommon, fdata-sections, fipa-icf-variables,
ftoplevel-reorder, funit-at-a-time, fwhole-program): Do not mark as
Optimization.
* ipa-icf.c (gate, sem_item_optimizer::filter_removed_items):
Fix for IPA.
Jonathan Wakely [Sun, 18 Jan 2015 16:31:06 +0000 (16:31 +0000)]
re PR libstdc++/64646 (New overloads of std::is_permutation dereference past-the-end iterator)
PR libstdc++/64646
* include/bits/stl_algo.h (__is_permutation): Also test for reaching
end of the second range.
* testsuite/25_algorithms/is_permutation/64646.cc: New.
Jonathan Wakely [Sun, 18 Jan 2015 14:25:22 +0000 (14:25 +0000)]
atomic_futex.h: Use mutex and condition_variable when atomic int is not lock-free.
* include/bits/atomic_futex.h: Use mutex and condition_variable when
atomic int is not lock-free. Make member variables private.
* src/c++11/futex.cc: Likewise.
Paul Thomas [Sun, 18 Jan 2015 12:21:38 +0000 (12:21 +0000)]
re PR fortran/55901 ([OOP] type is (character(len=*)) misinterpreted as array)
2015-01-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/55901
* primary.c (gfc_match_varspec): Exclude dangling associate-
names with dimension 0 from being counted as arrays.
* resolve.c (resolve_assoc_var): Sub-strings are permissible
for associate-names, so exclude characters from the test for
misuse as arrays.
* trans-decl.c (gfc_get_symbol_decl): Associate-names can use
the hidden string length variable of their associated target.
Signal this by setting 'length' to a constant, if the decl for
the string length is a variable.
2015-01-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/55901
* gfortran.dg/associate_1.f03: Allow test for character with
automatic length.
* config/rs6000/rs6000.c (rs6000_parallel_return): New function.
(rs6000_function_value): Use it. Handle SCmode and TCmode as well,
for TARGET_32BIT && TARGET_POWERPC64. Fix another BITS_PER_WORD
snafu.
(rs6000_libcall_value): Use the new function.
Paul Thomas [Sat, 17 Jan 2015 20:44:07 +0000 (20:44 +0000)]
re PR fortran/64578 ([OOP] Seg-fault and ICE with unlimited polymorphic array pointer function)
2015-01-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/64578
* trans-expr.c (gfc_trans_pointer_assignment): Make sure that
before reinitializing rse, to add the rse.pre to block before
creating 'ptrtemp'.
* trans-intrinsic.c (gfc_conv_associated): Deal with the class
data being a descriptor.
2015-01-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/64578
* gfortran.dg/unlimited_polymorphic_21.f90: New test
re PR fortran/60357 ([F08] structure constructor with unspecified values for allocatable components)
2015-01-17 Andre Vehreschild <vehre@gmx.de>
PR fortran/60357
* primary.c (build_actual_constructor): Prevent warning.
* trans-expr.c (alloc_scalar_allocatable_for_subcomponent_
assignment): New function encapsulates treatment of allocatable
components.
(gfc_trans_subcomponent_assign): Needed to distinguish between
regular assignment and initilization.
(gfc_trans_structure_assign): Same.
(gfc_conv_structure): Same.
PR fortran/61275
* gfortran.h: deferred_parameter is not needed, because
it artificial does the trick completely.
* primary.c (build_actual_constructor): Same.
(gfc_convert_to_structure_constructor): Same.
* resolve.c (resolve_fl_derived0): Same.
* trans-expr.c (gfc_conv_component_ref): Prevent treating
allocatable deferred length char arrays here.
(gfc_trans_subcomponent_assign): Same as above.
* trans-types.c (gfc_sym_type): This is done in
gfc_get_derived_type already.
2015-01-17 Andre Vehreschild <vehre@gmx.de>
PR fortran/60357
* gfortran.dg/alloc_comp_assign_13.f08: New test.
PR fortran/61275
* gfortran.dg/alloc_comp_assign_14.f08: New test.
PR fortran/55932
* gfortran.dg/alloc_comp_initializer_4.f03: New test.
re PR fortran/60334 (Segmentation fault on character pointer assignments)
2015-01-17 Andre Vehreschild <vehre@gmx.de>
PR fortran/60334
* trans-decl.c (gfc_get_symbol_decl):Use a ref on the string
length when the symbol is declared to be a result.
* trans-expr.c (gfc_conv_procedure_call): Strip deref on the
string length when functions are nested and the string length
is a reference already.
2015-01-17 Andre Vehreschild <vehre@gmx.de>
PR fortran/60334
* gfortran.dg/deferred_type_param_6.f90: Add tests for this PR.
Bernd Schmidt [Sat, 17 Jan 2015 07:35:40 +0000 (07:35 +0000)]
re PR rtl-optimization/52773 (internal error: in replace_pseudos_in, at reload1.c:577)
PR rtl-optimization/52773
* calls.c (emit_library_call_value): When pushing arguments use
stack_pointer_rtx rather than virtual_outgoing_args_rtx in
CALL_INSN_FUNCTION_USAGE. Only emit one of use of the magic
stack pointer reference into CALL_INSN_FUNCTION_USAGE.
PR rtl-optimization/52773
* gcc.c-torture/compile/pr52773.c: New test.
* config/rl78/constrains (Qs8): New constraint.
* config/rl78/rl78.c (rl78_flags_already_set): New function.
* config/rl78/rl78-protos.h (rl78_flags_already_set): New prototype.
* config/rl78/rl78-real.md (update_Z): New attribute.
Update patterns to set it.
(cbranchqi4_real): Call rl78_flags_already_set() to determine if a
shorter compare and branch sequence can be used.
(cbranchhi4_real): Likewise.
(cbranchhi4_real_inverted): Likewise.
* config/rl78/predicates.md (uword_operand): Allow symbol_refs.
* config/rl78/rl78-c.c (rl78_register_pragmas): Register __near
address space.
* config/rl78/rl78.c (rl78_get_name_encoding): New.
(rl78_option_override): Allow -mes0 only if C.
(characterize_address): Support subregs of symbol_refs.
(rl78_addr_space_address_mode): Move. Add __near.
(rl78_far_p): Likewise.
(rl78_addr_space_pointer_mode): Likewise.
(rl78_as_legitimate_address): Likewise.
(rl78_addr_space_subset_p): Likewise.
(rl78_addr_space_convert): Likewise.
(rl78_print_operand_1): Support 16-bit addressing of 32-bit
symbols with -mes0.
(transcode_memory_rtx): Don't copy ES if -mes0. Allow symbol[BC]
addressing.
(rl78_alloc_physical_registers_op1): Change logic to prefer
symbol[BC] addressing.
(frodata_section): New.
(rl78_asm_init_sections): Initialize it.
(rl78_select_section): Put __far readonly symbols in .frodata.
(rl78_make_type_far): New.
(rl78_insert_attributes): Force all readonly symbols to be __far when -mes0.
(rl78_asm_out_integer): New.
* config/rl78/rl78.h (ADDR_SPACE_NEAR): New.
* config/rl78/rl78.opt (-mes0): New.
Jonathan Wakely [Sat, 17 Jan 2015 01:23:28 +0000 (01:23 +0000)]
re PR libstdc++/60940 (general operations on atomic types do not work with atomic integral typedefs)
PR libstdc++/60940
* include/bits/atomic_base.h: Remove atomic integral typedefs as
synonyms for __atomic_base<int> etc.
* include/std/atomic: Make atomic_int a synonym for atomic<int> and
likewise for all atomic integral types.
* testsuite/29_atomics/atomic_integral/cons/copy_list.cc: New.
* testsuite/29_atomics/atomic/60695.cc: Adjust dg-error line number.
Jonathan Wakely [Sat, 17 Jan 2015 00:21:41 +0000 (00:21 +0000)]
re PR libstdc++/56785 (std::tuple of two elements does not apply empty base class optimization when one of its elements is a std::tuple with two elements)
compiler, reflect, runtime: Use static chain for closures.
Change from using __go_set_closure to passing the closure
value in the static chain field. Uses new backend support for
setting the closure chain in a call from C via
__builtin_call_with_static_chain. Uses new support in libffi
for Go closures.
The old architecture specific support for reflect.MakeFunc is
removed, replaced by the libffi support.
All work done by Richard Henderson.
* go-gcc.cc (Gcc_backend::call_expression): Add chain_expr argument.
(Gcc_backend::static_chain_variable): New method.
Christophe Lyon [Fri, 16 Jan 2015 18:19:42 +0000 (18:19 +0000)]
[ARM/AArch64][testsuite] Add explicit dependency on Neon Cumulative Saturation flag
* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
(Set_Neon_Cumulative_Sat): Add parameter.
(__set_neon_cumulative_sat): Support new parameter.
* gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc
(TEST_BINARY_SAT_OP1): Call Set_Neon_Cumulative_Sat with new
argument.
* gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc
(TEST_UNARY_SAT_OP1): Call Set_Neon_Cumulative_Sat with new
argument.