- 22 Nov, 2019 12 commits
-
-
gcc/ChangeLog: PR middle-end/88226 * builtins.c (check_nul_terminated_array): New function. (fold_builtin_0): Remove declaration. (fold_builtin_1): Same. (fold_builtin_2): Same. (fold_builtin_3): Same. (fold_builtin_strpbrk): Add argument. (fold_builtin_strspn): Same. (fold_builtin_strcspn): Same. (expand_builtin_strcat): Call it. Remove unused argument. (expand_builtin_stpncpy): Same. (expand_builtin_strncat): Same. (expand_builtin_strncpy): Same. Adjust indentation. (expand_builtin_strcmp): Same. (expand_builtin_strncmp): Same. (expand_builtin_fork_or_exec): Same. (expand_builtin): Handle more built-ins. (fold_builtin_2): Add argument. (fold_builtin_n): Make static. Add argument. (fold_call_expr): Pass new argument to fold_builtin_n and fold_builtin_2. (fold_builtin_call_array): Pass new argument to fold_builtin_n. (fold_builtin_strpbrk): Add argument. Call check_nul_terminated_array. (fold_call_stmt): Pass new argument to fold_builtin_n. * builtins.h: Correct a comment. * gimple-fold.c (gimple_fold_builtin_strchr): Call check_nul_terminated_array. * tree-ssa-strlen.c (handle_builtin_strlen): Call check_nul_terminated_array. (handle_builtin_strchr): Same. (handle_builtin_string_cmp): Same. gcc/testsuite/ChangeLog: PR middle-end/88226 * gcc.dg/Wstringop-overflow-22.c: New test. * gcc.dg/tree-ssa/builtin-fprintf-warn-1.c: Remove xfails. From-SVN: r278623
Martin Sebor committed -
2019-11-22 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn.c (OMP_LDS_SIZE): Define. (ACC_LDS_SIZE): Define. (OTHER_LDS_SIZE): Define. (LDS_SIZE): Redefine using above. (gcn_expand_prologue): Initialize m0 with LDS_SIZE-1. From-SVN: r278622
Andrew Stubbs committed -
gcc/testsuite/ChangeLog: PR tree-optimization/92501 * gcc.dg/strcmpopt_7.c: New test. gcc/ChangeLog: PR tree-optimization/92501 * gimple-fold.c ((gimple_fold_builtin_string_compare): Let strncmp handle unterminated arrays. Rename local variables for clarity. From-SVN: r278621
Martin Sebor committed -
2019-11-22 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn.c (gcn_hsa_declare_function_name): Calculate granulated_sgprs according to architecture. From-SVN: r278617
Andrew Stubbs committed -
* ggc-page.c (ggc_collect): Call memory_block_pool::trim. * memory-block.cc (memory_block_pool::clear_free_list): Rename to ... (memory_block_pool::reduce_free_list): ... this one. (memory_block_pool::trim): New static function. * memory-block.h (memory_block_pool::freelist_size): New constant (memory_block_pool::clear_free_list): Rename to ... (memory_block_pool::reduce_free_list): ... this one. (memory_block_pool::trim): Declare. * lto.c (lto_wpa_write_files): Call memory_block_pool::trim. From-SVN: r278616
Jan Hubicka committed -
vect-widen-mult-u8.c and vect-widen-mult-u8-u32.c were failing on arm-linux-gnueabihf with epilogue vectorisation because we print the expected messages twice rather than once. We could fix that either by removing the counts or by disabling epilogue loop vectorisation. The other vect-widen-mult-* tests do the latter, so I did the same here. 2019-11-22 Richard Sandiford <richard.sandiford@arm.com> gcc/testsuite/ * gcc.dg/vect/vect-widen-mult-u8.c: Disable epilogue loop vectorization. * gcc.dg/vect/vect-widen-mult-u8-u32.c: Likewise. From-SVN: r278613
Richard Sandiford committed -
gcc.dg/vect/vect-cond-reduc-3.c had been failing on arm-linux-gnueabihf since the test was added, because the test needs support for VEC_COND_EXPR <float cmp float, int, int> whereas the target only supports VEC_COND_EXPRs in which all modes are the same. (I have a fix for that, but it's not really stage 3 material.) 2019-11-22 Richard Sandiford <richard.sandiford@arm.com> gcc/testsuite/ * gcc.dg/vect/vect-cond-reduc-3.c: Require vect_cond_mixed rather than vect_condition. From-SVN: r278612
Richard Sandiford committed -
gcc.target/aarch64/sve/clastb_[57].c started failing after the increase in the cost of vec_to_scalar (r278452). The problem is that we were double-counting the cost of the CLASTB: once in vect_model_reduction_cost as a vec_to_scalar and once in vectorizable_condition as a plain vector_stmt. Based on the TODO above vect_model_reduction_cost, I think the preferred long-term direction is for vectorizable_* to cost these things itself, so that's what the patch does (for this one case only). 2019-11-22 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-stmts.c (vect_model_simple_cost): Take an optional vect_cost_for_stmt. (vectorizable_condition): Calculate the cost of EXTRACT_LAST_REDUCTION here rather than... * tree-vect-loop.c (vect_model_reduction_cost): ...here. From-SVN: r278611
Richard Sandiford committed -
The patterns neg_scc_insn and not_scc_insn are not correct, leading to failing pr77309 test for ARC700. Add two new bic compare with zero patterns to improve output code. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.md (bic_f): Use cc_set_register predicate. (bic_cmp0_noout): New pattern. (bic_cmp0): Likewise. (neg_scc_insn): Remove pattern. (not_scc_insn): Likewise. From-SVN: r278610
Claudiu Zissulescu committed -
Fix ARC specific tests by improving the matching pattern and adding the missing functionality in arc.exp gcc/tests xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/add_n-combine.c: Match add1/2/3 instruction in output assembly. * gcc.target/arc/arc.exp (check_effective_target_codedensity): Add. * gcc.target/arc/cmem-7.c: Fix matching patterns. * gcc.target/arc/cmem-bit-1.c: Likewise. * gcc.target/arc/cmem-bit-2.c: Likewise. * gcc.target/arc/cmem-bit-3.c: Likewise. * gcc.target/arc/cmem-bit-4.c: Likewise. * gcc.target/arc/interrupt-2.c: Match rtie insn for A7. * gcc.target/arc/store-merge-1.c: This test is only meaningful for architectures with double load/store operations. From-SVN: r278609
Claudiu Zissulescu committed -
gcc/testsuite/ChangeLog: * gcc.dg/strlenopt-66.c: Avoid buffer overflow. Add more test cases. From-SVN: r278608
Martin Sebor committed -
From-SVN: r278607
GCC Administrator committed
-
- 21 Nov, 2019 28 commits
-
-
The patch to make -fcommon the default introduces a bogus claim into the GCC documentation. -fcommon was claimed to be incompatible with ISO C for preventing duplicate definitions from being diagnosed. It does, but as that elicits undefined behaviour (the requirement that there shall be no more than one external definition is not a constraint), ISO C does not require any diagnostic for it. In the absence of any other rule this would violate, both -fcommon and -fno-common are fully compatible with all versions of ISO C. 2019-11-21 Harald van Dijk <harald@gigawatt.nl> * doc/invoke.texi (-fcommon): Remove claim about ISO C. From-SVN: r278604
Harald van Dijk committed -
Various bad uses of the [[fallthrough]] attribute are constraint violations in C2x, so need pedwarns rather than warnings. This patch duly turns the relevant warnings into pedwarns. The relevant code is not specific to C, and does not know which form the attribute was given in ([[fallthrough]] or [[gnu::fallthrough]] or __attribute__((fallthrough))), but as I understand it these usages are also erroneous for C++ and it seems reasonable to give a pedwarn here even when a form other than [[fallthrough]] is being used. The precise meaning of the standard wording about "The next statement that would be executed" seems a but unclear in some corner cases; the tests added keep to cases where it is clear whether or not the next statement executed is of the required form. Bootstrapped with no regressions for x86_64-pc-linux-gnu. gcc: * gimplify.c (expand_FALLTHROUGH_r, expand_FALLTHROUGH): Use pedwarn instead of warning_at for fallthrough not preceding a case or default label. gcc/c-family: * c-attribs.c (handle_fallthrough_attribute): Use pedwarn instead of warning. gcc/testsuite: * gcc.dg/c2x-attr-fallthrough-6.c: New test. Split out from c2x-attr-fallthrough-3.c. * gcc.dg/c2x-attr-fallthrough-1.c: Add more tests. * gcc.dg/c2x-attr-fallthrough-2.c: Update expected diagnostics. * gcc.dg/c2x-attr-fallthrough-3.c: Split inside-switch part of test out to c2x-attr-fallthrough-6.c. From-SVN: r278599
Joseph Myers committed -
2019-11-22 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> PR tree-optimization/92608 * tree-ssa-loop-unswitch.c (find_loop_guard): Use safe_dyn_cast instead of dyn_cast. testsuite/ * gcc.dg/torture/pr92608.c: New test. From-SVN: r278598
Prathamesh Kulkarni committed -
These two tests are explicitly testing the use of specific sections or assembler directives for data that is placed in common. Append -fcommon to the flags to restore them. gcc/testsuite/ChangeLog: 2019-11-21 Iain Sandoe <iain@sandoe.co.uk> * gcc.dg/darwin-comm.c: Add -fcommon to compile flags. * gcc.dg/darwin-sections.c: Likewise. From-SVN: r278596
Iain Sandoe committed -
2019-11-21 Iain Sandoe <iain@sandoe.co.uk> PR testsuite/92619 * gcc.dg/gnu2x-attrs-1.c: Fix dg-error syntax. From-SVN: r278594
Iain Sandoe committed -
We currently expand various floating point comparisons early, to some sequences with cror insns and the like. This doesn't optimize well. Change that to allow any of the 14 floating point comparisons in the instruction stream, and split them after combine (at split1). * config/rs6000/predicates.md (extra_insn_branch_comparison_operator): New predicate. * config/rs6000/rs6000-protos.h (rs6000_emit_fp_cror): New declaration. * config/rs6000/rs6000.c (rs6000_generate_compare): Don't do anything special for FP comparisons that need a cror instruction eventually. (rs6000_emit_fp_cror): New function. (rs6000_emit_sCOND): Expand all floating point comparisons to one instruction, for normal FP modes, with HONOR_NANS. (rs6000_emit_cbranch): Reformat. * config/rs6000/rs6000.md (fp_rev): New iterator. (fp_two): New iterator. *<code><mode>_cc for fp_rev and GPR: New define_insn_and_split. *<code><mode>_cc for fp_two and GPR: New define_insn_and_split. *cbranch_2insn: New define_insn_and_split. From-SVN: r278593
Segher Boessenkool committed -
Allowing mixed vector sizes broke the assumption in the following assert, since it's now possible for different accesses to require different levels of alignment: /* FORNOW: use the same mask to test all potentially unaligned references in the loop. The vectorizer currently supports a single vector size, see the reference to GET_MODE_NUNITS (TYPE_MODE (vectype)) where the vectorization factor is computed. */ gcc_assert (!LOOP_VINFO_PTR_MASK (loop_vinfo) || LOOP_VINFO_PTR_MASK (loop_vinfo) == mask); I guess we could try to over-align smaller accesses so that all of them are consistent, or try to support multiple alignment masks, but for now the easiest fix seems to be to turn the assert into a bail-out check. 2019-11-21 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR tree-optimization/92526 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Reject versioning for alignment if the accesses do not have a consistent mask, rather than asserting that the masks are consistent. gcc/testsuite/ PR tree-optimization/92526 * gcc.target/aarch64/pr92526.c: New test. From-SVN: r278592
Richard Sandiford committed -
In vect-alias-check-1.c we unroll the inner loop and then vectorise the stores at a[c + 1][b]. Since the access has no guaranteed alignemnt, we need a realignment mechanism or support for unaligned accesses in order to vectorise. In vect-alias-check-18.c we use a reverse access and so need permute support in order to vectorise. I'm not really sure when this part of the testsuite prefers { xfail { ! foo } } and when it prefers { target foo }. xfail seems like the most common choice for the alignment restriction, whereas vect_int and vect_perm are mostly dg-require-effective-target style features, so I went with that combination. 2019-11-21 Richard Sandiford <richard.sandiford@arm.com> gcc/testsuite/ PR testsuite/92543 * gcc.dg/vect/vect-alias-check-1.c: XFAIL the alias check message if there is no realignment support and no support for unaligned accesses. * gcc.dg/vect/vect-alias-check-18.c: Restrict the test for the alias message to targets that have permute support. From-SVN: r278591
Richard Sandiford committed -
This patch fixes some cases in which we weren't checking whether we had a vector mode before calling related_vector_mode or before making vector optab queries. 2019-11-21 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR tree-optimization/92595 * tree-vect-stmts.c (get_group_load_store_type): Add a VECTOR_MODE_P check. (vectorizable_store, vectorizable_load): Likewise. gcc/testsuite/ PR tree-optimization/92595 * g++.dg/vect/pr92595.cc: New test. From-SVN: r278590
Richard Sandiford committed -
Hello, This patch fixes arm acle testcase crc_hf_1.c by modifying the compiler options directive. Regression tested on arm-none-eabi and found no regressions. Ok for trunk? If ok, please commit on my behalf, I don't have the commit rights. Thanks, Srinath. Applied on behalf of Srinath. gcc/testsuite/ChangeLog: 2019-11-21 Srinath Parvathaneni <srinath.parvathaneni@arm.com> * gcc.target/arm/acle/crc_hf_1.c: Modify the compiler options directive from dg-options to dg-additional-options. From-SVN: r278588
Srinath Parvathaneni committed -
gcc/testsuite: * gcc.c-torture/execute/20030913-1.c: Rename glob to g. * gcc.c-torture/execute/960218-1.c: Rename glob to gl. * gcc.c-torture/execute/complex-6.c: Rename err to e. * gcc.dg/torture/ssa-pta-fn-1.c: Rename glob to g. libgomp: * testsuite/libgomp.c/pr39591-1.c: Rename err to e. * testsuite/libgomp.c/pr39591-2.c: Likewise. * testsuite/libgomp.c/pr39591-3.c: Likewise. * testsuite/libgomp.c/private-1.c: Likewise. * testsuite/libgomp.c/task-1.c: Likewise. * testsuite/libgomp.c/task-5.c: Renamed err to serr. From-SVN: r278571
Rainer Orth committed -
* parser.c (cp_parser_member_declaration): Don't attempt to print erroneous bit-field diagnostic if grokdeclarator returns error_mark_node. * g++.dg/parse/crash71.C: New test. From-SVN: r278570
Marek Polacek committed -
* ipa-inline.c (update_callee_keys): Add parameter UPDATE_SINCE. (resolve_noninline_speculation, inline_small_functions): Avoid redundant updates. From-SVN: r278566
Jan Hubicka committed -
Add a missing extern to ensure the test passes with -fno-common change. Committed as obvious. testsuite/ * gfortran.dg/global_vars_f90_init_driver.c: Add missing extern. From-SVN: r278557
Wilco Dijkstra committed -
2019-11-21 Richard Biener <rguenther@suse.de> * lra.c (lra_insn_recog_data_pool): New. (free_insn_recog_data): Adjust. (finish_insn_recog_data): Release lra_insn_recog_data_pool. (lra_set_insn_recog_data): Allocate from lra_insn_recog_data_pool. From-SVN: r278556
Richard Biener committed -
2019-11-21 Richard Biener <rguenther@suse.de> PR tree-optimization/92596 * tree-vect-slp.c (vect_build_slp_tree): Fix pasto. * gcc.dg/torture/pr92596-1.c: New testcase. From-SVN: r278555
Richard Biener committed -
* ipa-prop.h (ipa_release_agg_values): Add parameter RELEASE_VECTOR. From-SVN: r278554
Jan Hubicka committed -
ipa-fnsummary.c (evaluate_conditions_for_known_args): Be ready for some vectors to not be allocated. * ipa-fnsummary.c (evaluate_conditions_for_known_args): Be ready for some vectors to not be allocated. (evaluate_properties_for_edge): Document better; make known_vals and known_aggs caller allocated; avoid determining values of parameters which are not used. (ipa_merge_fn_summary_after_inlining): Pre allocate known_vals and known_aggs. * ipa-inline-analysis.c (do_estimate_edge_time): Likewise. (do_estimate_edge_size): Likewise. (do_estimate_edge_hints): Likewise. * ipa-cp.c (ipa_get_indirect_edge_target_1): Do not early exit when values are not known. (ipa_release_agg_values): Add option to not release vector itself. From-SVN: r278553
Jan Hubicka committed -
The test fp-int-convert-timode-1.c uses FE_TONEAREST without actually checking if the target has defined it. Like the rest of the tests I now add a check to see if the target has actually implemented it. This fixed Arm newlib target failures. Regtested on aarch64-none-elf and aarch64_be-none-elf and no issues. Committed under the GCC obvious rules. gcc/testsuite/ChangeLog: * gcc.dg/torture/fp-int-convert-timode-1.c: Add check for FE_TONEAREST. From-SVN: r278552
Tamar Christina committed -
2019-11-21 Richard Biener <rguenther@suse.de> * cfgloop.h (loop_iterator::~loop_iterator): Remove. (loop_iterator::to_visit): Use an auto_vec with internal storage. (loop_iterator::loop_iterator): Adjust. * cfganal.c (compute_dominance_frontiers_1): Fold into... (compute_dominance_frontiers): ... this. Hoist invariant get_immediate_dominator call. (compute_idf): Use a work-set instead of a work-list for more optimal iteration order and duplicate avoidance. * tree-into-ssa.c (mark_phi_for_rewrite): Avoid re-allocating the vector all the time, instead pre-allocate the vector only once. (delete_update_ssa): Simplify. * vec.h (va_heap::release): Disable -Wfree-nonheap-object around it. From-SVN: r278550
Richard Biener committed -
Bumping the cost of vec_to_scalar made the .s loop in gcc.target/aarch64/sve2/whilerw_1.c use a runtime profitability check, like the .d version already did. Since the cost model isn't really being tested here, the most robust fix seemed to be to disable it, which I should really have done from the outset. 2019-11-21 Richard Sandiford <richard.sandiford@arm.com> gcc/testsuite/ * gcc.target/aarch64/sve2/whilerw_1.c: Add -fno-vect-cost-model. Require x0 in the .d test too. From-SVN: r278549
Richard Sandiford committed -
re PR tree-optimization/91355 (optimized code does not call destructor while unwinding after exception) PR tree-optimization/91355 * tree-ssa-sink.c (select_best_block): Use >= rather than > for early_bb scaled count with best_bb count comparison. * g++.dg/torture/pr91355.C: New test. From-SVN: r278548
Jakub Jelinek committed -
This test fails on targets without symbol alias support, but we don't want to skip it entirely with the usual dg-requires, thus expect the error on the alias line. gcc/testsuite/ChangeLog: 2019-11-21 Iain Sandoe <iain@sandoe.co.uk> * gcc.dg/gnu2x-attrs-1.c: Expect an error for the alias case on Darwin. From-SVN: r278547
Iain Sandoe committed -
* ipa-fnsummary.h (enum ipa_hints_vals): Fix comment typo, preffer -> prefer. * ipa-inline.c (edge_badness): Likewise. * lto-streamer.h (class lto_location_cache): Likewise. * tree-ssa-sink.c (select_best_block): Likewise. Fix comment typos, gratutious -> gratuitous. From-SVN: r278546
Jakub Jelinek committed -
revert: re PR tree-optimization/91790 (ICE: verify_ssa failed (error: definition in block 2 follows the use)) 2019-11-21 Richard Biener <rguenther@suse.de> Revert 2019-09-17 Richard Biener <rguenther@suse.de> PR tree-optimization/91790 * tree-vect-stmts.c (vectorizable_load): For BB vectorization use the correct DR for setting up realignment. From-SVN: r278544
Richard Biener committed -
cfganal.c (pre_and_rev_post_order_compute_fn): Use an auto_bb_flag instead of an sbitmap for visited handling. 2019-11-21 Richard Biener <rguenther@suse.de> * cfganal.c (pre_and_rev_post_order_compute_fn): Use an auto_bb_flag instead of an sbitmap for visited handling. * lra.c (lra_insn_recog_data_pool): New. (free_insn_recog_data): Adjust. (finish_insn_recog_data): Release lra_insn_recog_data_pool. (lra_set_insn_recog_data): Allocate from lra_insn_recog_data_pool. * tree-ssa-structalias.c (equiv_class_hasher): Change to nofree. (equiv_class_obstack): New. (equiv_class_lookup_or_add): Allocate from equiv_class_obstack. (perform_var_substitution): Initialize equiv_class_obstack. (free_var_substitution_info): Free equiv_class_obstack. From-SVN: r278543
Richard Biener committed -
* ipa-inline.c (want_early_inline_function_p): Do not estimate edge growth when callee function is very large. * ipa-inline.h (estimate_min_edge_growth): New. From-SVN: r278542
Jan Hubicka committed -
* ipa-fnsummary.c (ipa_fn_summary::account_size_time): Allow negative time in calls summary; correct roundoff errors leading to negative times. (ipa_merge_fn_summary_after_inlining): Update calls size time table if present. (ipa_update_overall_fn_summary): Add RESET parameter. * ipa-fnsummary.h (ipa_update_overall_fn_summary): Update prototype. * ipa-inline-transform.c (inline_call): Enable incremental updates. From-SVN: r278541
Jan Hubicka committed
-