Jakub Jelinek [Wed, 26 Nov 2014 19:36:36 +0000 (20:36 +0100)]
e.53.4.c: Add -DITESTITERS=20 to dg-options unless expensive testing is on.
* testsuite/libgomp.c/examples-4/e.53.4.c: Add -DITESTITERS=20
to dg-options unless expensive testing is on.
(TESTITERS): Define to N if not defined.
(main): Use TESTITERS instead of N.
* testsuite/libgomp.c/examples-4/e.55.1.c: Define CHUNKSZ from
dg-additional-options depending on whether expensive testing is on.
* testsuite/libgomp.fortran/examples-4/e.55.1.f90 (e_55_1_mod):
Decrease N to 100000 and CHUNKSZ to 10000.
Diagnose string constant conversion to char* in c++11 and above as forbidden, not deprecated.
Diagnose string constant conversion to char* in c++11 and above
as forbidden, not deprecated.
* typeck.c (string_conv_p): Do a pedwarn in c++11 and above,
change the diagnostic for the Wwrite-strings case for c++11 and above.
Richard Biener [Wed, 26 Nov 2014 14:39:43 +0000 (14:39 +0000)]
fold-const.h (const_unop): Declare.
2014-11-26 Richard Biener <rguenther@suse.de>
* fold-const.h (const_unop): Declare.
(const_binop): Likewise.
* fold-const.c (const_binop): Export overload that expects
a type parameter and dispatches to fold_relational_const as well.
Check both operand kinds for guarding the transforms.
(const_unop): New function, with constant folding from fold_unary_loc.
(fold_unary_loc): Dispatch to const_unop for tcc_constant operand.
Remove constant folding done there from the simplifications.
(fold_binary_loc): Check for constants using CONSTANT_CLASS_P.
(fold_negate_expr): Remove dead code from the REAL_CST case.
Avoid building garbage in the COMPLEX_CST case.
* gimple-match-head.c (gimple_resimplify1): Dispatch to
const_unop.
(gimple_resimplify2): Dispatch to const_binop.
(gimple_simplify): Likewise.
Ilya Enkovich [Wed, 26 Nov 2014 14:37:07 +0000 (14:37 +0000)]
re PR bootstrap/63995 (Bootstrap error with -mmpx -fcheck-pointer-bounds)
gcc/
PR bootstrap/63995
* tree-chkp-opt.c (chkp_reduce_bounds_lifetime): Ignore
debug statement when searching for a new position for
bounds load/creation statement.
Mark Wielaard [Wed, 26 Nov 2014 10:10:27 +0000 (10:10 +0000)]
DWARF add DW_AT_noreturn on noreturn function subprogram.
This implements the DWARFv5 noreturn proposal:
http://dwarfstd.org/ShowIssue.php?issue=140331.1
TREE_THIS_VOLATILE on a FUNCTION_DECL node means the function does not
return normally. This catches the traditional noreturn GNU attribute,
the C11 _Noreturn keyword and the C++11 [[noreturn]] attribute.
This relies on the DW_AT_noreturn constant defined in the DWARFv5 DRAFT:
http://www.dwarfstd.org/doc/dwarf5.20141029.pdf
gcc/ChangeLog
* dwarf2out.c (gen_subprogram_die): Add DW_AT_noreturn when the
function decl has TREE_THIS_VOLATILE.
gcc/testsuite/ChangeLog
* g++.dg/debug/dwarf2/noreturn-function.C: New test.
* gcc.dg/debug/dwarf2/noreturn-function-attribute.c: Likewise.
* gcc.dg/debug/dwarf2/noreturn-function-keyword.c: Likewise.
include/ChangeLog
* dwarf2.def (DW_AT_noreturn): New DWARF5 attribute.
Richard Biener [Wed, 26 Nov 2014 09:43:39 +0000 (09:43 +0000)]
re PR tree-optimization/62238 (ICE with LTO on valid code on x86_64-linux-gnu in verify_ssa (in 64-bit mode))
2014-11-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/62238
* tree-predcom.c (ref_at_iteration): Unshare the expression
before gimplifying it.
(prepare_initializers_chain): Discard unused seq.
Tobias Burnus [Tue, 25 Nov 2014 22:33:32 +0000 (23:33 +0100)]
gfortran.h (gfc_option_t): Remove flags moved as Var to .opt.
2014-11-25 Tobias Burnus <burnus@net-b.de>
gcc/fortran/
* gfortran.h (gfc_option_t): Remove flags moved as Var to .opt.
(gfc_error_now_1): Renamed from gfc_error_now.
(gfc_error_now): Renamed from gfc_error_now_2.
(gfc_warning_now_1): Renamed from gfc_warning_now.
(gfc_warning_now): Renamed from gfc_warning_now_2.
* error.c (gfc_error_now_1): Renamed from gfc_error_now.
(gfc_error_now): Renamed from gfc_error_now_2.
(gfc_warning_now_1): Renamed from gfc_warning_now.
(gfc_warning_now): Renamed from gfc_warning_now_2.
(gfc_get_errors): Include common diagnostic in count.
* lang.opt (Wc-binding-type, Wconversion, Wconversion-extra,
Wintrinsics-std): Create a Var for those warnings.
* check.c (gfc_check_cmplx): Pass warning flag to
diagnostic function.
* decl.c (get_proc_name, gfc_verify_c_interop_param, build_sym
gfc_set_constant_character_len, verify_bind_c_sym): Ditto; use
_1 for old diagnostic, remove _2 for new diagnostic.
* expr.c (gfc_check_assign, gfc_check_vardef_context): Ditto.
* frontend-passes.c (doloop_code, do_function): Ditto.
* intrinsic.c (gfc_is_intrinsic, gfc_convert_type_warn): Ditto.
* match.c (gfc_match_common): Ditto.
* module.c (use_iso_fortran_env_module, gfc_use_module): Ditto.
* parse.c (decode_statement, decode_gcc_attribute, next_free,
next_fixed, gfc_check_do_variable): Ditto.
* resolve.c (resolve_common_vars, resolve_ordinary_assign):
Ditto.
* scanner.c (add_path_to_list, skip_free_comments,
gfc_next_char_literal, gfc_gobble_whitespace, load_line,
preprocessor_line, load_file): Ditto.
* symbol.c (gfc_set_default_type, verify_bind_c_derived_type):
Ditto.
* options.c (gfc_post_options): Ditto.
(gfc_init_options, set_Wall, gfc_handle_option): Ditto; remove
flags which now have a Var.
* invoke.texi (Wconversion-extra): Make clear that the flag
does not imply -Wconversion.
gcc/testsuite/
* gfortran.dg/empty_label.f: Change test to continue testing
for -fmax-errors=1.
* gfortran.dg/empty_label.f90: Ditto.
* gfortran.dg/warnings_are_errors_1.f90: Update dg-*.
Matthew Fortune [Tue, 25 Nov 2014 14:57:33 +0000 (14:57 +0000)]
MIPS: Testsuite fixes for soft-float configurations
gcc/testuite/
* gcc.target/mips/mips.exp: Add support for -msoft-float
and -mhard-float options. Ensure that explicit -mfp*
options imply both -mhard-float and -mdouble-float.
* gcc.target/mips/call-clobbered-1.c: Add -mhard-float to the
compile options.
Jakub Jelinek [Tue, 25 Nov 2014 11:16:27 +0000 (12:16 +0100)]
re PR preprocessor/60436 (C preprocessor segfaults on assembly file)
PR preprocessor/60436
* line-map.c (linemap_line_start): If highest is above 0x60000000
and we are still tracking columns or highest is above 0x70000000,
force add_map.
Tim Shen [Tue, 25 Nov 2014 05:43:04 +0000 (05:43 +0000)]
re PR libstdc++/63920 (Any regular expression should not match an empty sequence if match_not_null is specified)
PR libstdc++/63920
* include/bits/regex_executor.h: Make _M_begin non const.
* include/bits/regex_executor.tcc (_Executor<>::_M_search): Increase
_M_begin in search algorithm, so that _M_begin is treated as
"current start position" for each search iteration.
* testsuite/28_regex/algorithms/regex_search/ecma/flags.cc: New
testcase.
Michael Meissner [Mon, 24 Nov 2014 19:27:29 +0000 (19:27 +0000)]
re PR target/63965 (ICE: in extract_constrain_insn, at recog.c:2230 on ppc64)
2014-11-24 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/63965
* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Do not set
Altivec & -16 mask if the type is not valid for Altivec registers.
(rs6000_secondary_reload_memory): Add support for ((reg + const) +
reg) that occurs during push_reload processing.
* config/rs6000/altivec.md (altivec_mov<mode>): Add instruction
alternative for moving constant vectors which are easy altivec
constants to GPRs. Set the length attribute each of the
alternatives.
Michael Meissner [Mon, 24 Nov 2014 18:58:40 +0000 (18:58 +0000)]
re PR target/63965 (ICE: in extract_constrain_insn, at recog.c:2230 on ppc64)
2014-11-24 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/63965
* config/rs6000/rs6000-cpus.def: Undo November 21st changes, a
work in progress patch was committed instead of the fixes for
63965.
* config/rs6000/rs6000.c: Likewise.
Richard Biener [Mon, 24 Nov 2014 14:07:18 +0000 (14:07 +0000)]
re PR target/63679 ([AArch64] Failure to constant fold.)
2014-11-24 Richard Biener <rguenther@suse.de>
PR tree-optimization/63679
* tree-ssa-sccvn.c: Include ipa-ref.h, plugin-api.h and cgraph.h.
(copy_reference_ops_from_ref): Fix non-constant ADDR_EXPR case
to properly leave off at -1.
(fully_constant_vn_reference_p): Generalize folding from
constant initializers.
(vn_reference_lookup_3): When looking through aggregate copies
handle offsetted reads and try simplifying the result to
a constant.
* gimple-fold.h (fold_ctor_reference): Export.
* gimple-fold.c (fold_ctor_reference): Likewise.
* gcc.dg/tree-ssa/ssa-fre-42.c: New testcase.
* gcc.dg/tree-ssa/20030807-5.c: Avoid folding read from global to zero.
* gcc.target/i386/ssetype-1.c: Likewise.
* gcc.target/i386/ssetype-3.c: Likewise.
* gcc.target/i386/ssetype-5.c: Likewise.
Kyrylo Tkachov [Mon, 24 Nov 2014 11:09:59 +0000 (11:09 +0000)]
[sched-deps] Remove needless check for modified_in_p when trying to fuse two non-conditional jump insns
* sched-deps.c (sched_macro_fuse_insns): Do not check modified_in_p
in the not conditional jump case.
* doc/tm.texi (TARGET_SCHED_MACRO_FUSION_PAIR_P): Update description.
* target.def (TARGET_SCHED_MACRO_FUSION_PAIR_P): Update description.
Martin Liska [Mon, 24 Nov 2014 10:43:55 +0000 (11:43 +0100)]
[PATCH 2/2] ipa-inline uses sreal for as fibonacci_heap template
* ipa-inline.c (edge_badness): long is replaced by sreal
as fibonacci_heap template type.
(update_edge_key): Likewise.
(inline_small_functions): Likewise.
Martin Liska [Mon, 24 Nov 2014 10:41:18 +0000 (11:41 +0100)]
[PATCH 1/2] Negative numbers added for sreal class.
* predict.c (propagate_freq): More elegant sreal API is used.
(estimate_bb_frequencies): Precomputed constants replaced by integer
constants.
* sreal.c (sreal::normalize): New function.
(sreal::to_int): Likewise.
(sreal::operator+): Likewise.
(sreal::operator-): Likewise.
(sreal::signedless_plus): Likewise.
(sreal::signedless_minus): Likewise.
(sreal::operator/): Negative number support is added.
* sreal.h: Definition of new functions added.
(inline sreal operator<<): New function.
(inline sreal operator>>): Likewise.
Martin Liska [Mon, 24 Nov 2014 10:25:06 +0000 (11:25 +0100)]
re PR lto/63968 (175.vpr from cpu2000 fails to build with LTO)
PR lto/63968
* bb-reorder.c (find_traces_1_round): decreate_key is replaced
with replace_key method.
* fibonacci_heap.h (fibonacci_heap::insert): New argument.
(fibonacci_heap::replace_key_data): Likewise.
(fibonacci_heap::replace_key): New method that can even increment key,
this operation costs O(log N).
(fibonacci_heap::extract_min): New argument.
(fibonacci_heap::delete_node): Likewise.
Richard Biener [Mon, 24 Nov 2014 09:24:50 +0000 (09:24 +0000)]
re PR tree-optimization/55334 (mgrid regression (ipa-cp disables vectorization))
2014-11-24 Richard Biener <rguenther@suse.de>
PR tree-optimization/55334
* function.h (struct function): Add last_clique member.
* tree-inline.c (remap_dependence_clique): New function.
(remap_gimple_op_r): Remap dependence cliques in MEM_REFs.
(copy_tree_body_r): Likewise.
(copy_cfg_body): Free dependence map.
(copy_gimple_seq_and_replace_locals): Likewise.
* tree-pretty-print.c (dump_generic_node): Dump
dependence info.
* tree-ssa-alias.c (refs_may_alias_p_1): Use dependence info
to answer alias query.
* tree-ssa-structalias.c: Include tree-phinodes.h, ssa-iterators.h,
tree-pretty-print.h and gimple-walk.h.
(struct variable_info): Add is_restrict_var flag and ruid
member.
(new_var_info): Initialize is_restrict_var.
(make_constraint_from_restrict): Likewise.
(create_variable_info_for): Exclude restricts from global vars
from new handling.
(intra_create_variable_infos): But not those from parameters.
(visit_loadstore): New function.
(maybe_set_dependence_info): Likewise.
(compute_dependence_clique): Likewise.
(compute_may_aliases): Call compute_dependence_clique.
* tree-data-ref.c (dr_analyze_indices): Copy dependence info
to fake MEM_REF.
(dr_may_alias_p): Use recorded dependence info to answer
alias query.
* tree-core.h (struct tree_base): Add clique, base struct in
union.
* tree.h (MR_DEPENDENCE_CLIQUE): New macro.
(MR_DEPENDENCE_BASE): Likewise.
* tree-inline.h (dependence_hasher): New hash-map kind.
(struct copy_body_data): Add dependence_map pointer.
* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Avoid
throwing away dependence info.
* tree-streamer-in.c (unpack_value_fields): Stream dependence info.
* tree-streamer-out.c (streamer_pack_tree_bitfields): Likewise.
Richard Biener [Mon, 24 Nov 2014 09:24:26 +0000 (09:24 +0000)]
re PR tree-optimization/55334 (mgrid regression (ipa-cp disables vectorization))
2014-11-24 Richard Biener <rguenther@suse.de>
PR tree-optimization/55334
* function.h (struct function): Add last_clique member.
* tree-inline.c (remap_dependence_clique): New function.
(remap_gimple_op_r): Remap dependence cliques in MEM_REFs.
(copy_tree_body_r): Likewise.
(copy_cfg_body): Free dependence map.
(copy_gimple_seq_and_replace_locals): Likewise.
* tree-pretty-print.c (dump_generic_node): Dump
dependence info.
* tree-ssa-alias.c (refs_may_alias_p_1): Use dependence info
to answer alias query.
* tree-ssa-structalias.c: Include tree-phinodes.h, ssa-iterators.h,
tree-pretty-print.h and gimple-walk.h.
(struct variable_info): Add is_restrict_var flag and ruid
member.
(new_var_info): Initialize is_restrict_var.
(make_constraint_from_restrict): Likewise.
(create_variable_info_for): Exclude restricts from global vars
from new handling.
(intra_create_variable_infos): But not those from parameters.
(visit_loadstore): New function.
(maybe_set_dependence_info): Likewise.
(compute_dependence_clique): Likewise.
(compute_may_aliases): Call compute_dependence_clique.
* tree-data-ref.c (dr_analyze_indices): Copy dependence info
to fake MEM_REF.
(dr_may_alias_p): Use recorded dependence info to answer
alias query.
* tree-core.h (struct tree_base): Add clique, base struct in
union.
* tree.h (MR_DEPENDENCE_CLIQUE): New macro.
(MR_DEPENDENCE_BASE): Likewise.
* tree-inline.h (dependence_hasher): New hash-map kind.
(struct copy_body_data): Add dependence_map pointer.
* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Avoid
throwing away dependence info.
* tree-streamer-in.c (unpack_value_fields): Stream dependence info.
* tree-streamer-out.c (streamer_pack_tree_bitfields): Likewise.
Eric Botcazou [Mon, 24 Nov 2014 08:34:01 +0000 (08:34 +0000)]
trans.c (build_return_expr): Use INIT_EXPR instead of MODIFY_EXPR to assign to the return object.
* gcc-interface/trans.c (build_return_expr): Use INIT_EXPR instead of
MODIFY_EXPR to assign to the return object.
(finalize_nrv_r): Adjust to above change.
(finalize_nrv_unc_r): Likewise.
Eric Botcazou [Mon, 24 Nov 2014 08:18:40 +0000 (08:18 +0000)]
trans.c (push_range_check_info): Replace early test with assertion.
* gcc-interface/trans.c (push_range_check_info): Replace early test
with assertion.
(Raise_Error_to_gnu): Do not call push_range_check_info if the loop
stack is empty.
* gcc-interface/utils.c (convert_to_fat_pointer): Fix formatting.
* gcc-interface/utils2.c (gnat_invariant_expr): Deal with padded types
and revert latest change.
Oleg Endo [Sun, 23 Nov 2014 21:16:26 +0000 (21:16 +0000)]
re PR target/53976 ([SH] Unnecessary clrt/sett after bt/bf)
gcc/
PR target/53976
* config/sh/sh_optimize_sett_clrt.cc
(sh_optimize_sett_clrt::find_last_ccreg_values): Return bool instead
of void. Abort at complex edges.
(sh_optimize_sett_clrt::execute): Do nothing if find_last_ccreg_values
returned false.