- 13 Oct, 2017 8 commits
-
-
This patch uses subreg_lowpart_offset in places that open-coded the calculation. It also uses it in regcprop.c to test whether, after a mode change, the first register in a multi-register group is still the right one. 2017-10-13 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * calls.c (expand_call): Use subreg_lowpart_offset. * cse.c (cse_insn): Likewise. * regcprop.c (copy_value): Likewise. (copyprop_hardreg_forward_1): Likewise. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253713
Richard Sandiford committed -
PR target/82524 * config/i386/i386.md (addqi_ext_1, andqi_ext_1, *andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change =Q constraints to +Q and into insn condition add check that operands[0] and operands[1] are equal. (*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change =Q constraints to +Q and into insn condition add check that operands[0] is equal to either operands[1] or operands[2]. * gcc.c-torture/execute/pr82524.c: New test. From-SVN: r253710
Jakub Jelinek committed -
PR target/82498 * fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups, instead of handling MINUS_EXPR twice (once for each argument), canonicalize operand order and handle just once, use rtype where possible. Handle (A << B) | (A >> (-B & (Z - 1))). * gcc.dg/tree-ssa/pr82498.c: New test. From-SVN: r253709
Jakub Jelinek committed -
PR target/82498 * config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow any values of __C while still being pattern recognizable as a simple rotate instruction. * gcc.dg/ubsan/pr82498.c: New test. From-SVN: r253708
Jakub Jelinek committed -
2017-10-13 Richard Biener <rguenther@suse.de> PR tree-optimization/82451 Revert 2017-10-02 Richard Biener <rguenther@suse.de> PR tree-optimization/82355 * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build a mapping for the enclosing loop but avoid generating one for the loop tree root. (copy_bb_and_scalar_dependences): Remove premature codegen error on PHIs in blocks duplicated into multiple places. * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_refs_p): For a loop not in the region use it as loop and nest to analyze the DR in. (try_generate_gimple_bb): Likewise. * graphite-sese-to-poly.c (extract_affine_chrec): Adjust. (add_loop_constraints): For blocks in a loop not in the region create a dimension with a single iteration. * sese.h (gbb_loop_at_index): Remove assert. * cfgloop.c (loop_preheader_edge): For the loop tree root return the single successor of the entry block. * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Reset the SCEV hashtable and niters. * graphite-scop-detection.c (scop_detection::graphite_can_represent_scev): Add SCOP parameter, assert that we only have POLYNOMIAL_CHREC that vary in loops contained in the region. (scop_detection::graphite_can_represent_expr): Adjust. (scop_detection::stmt_has_simple_data_refs_p): For loops not in the region set loop to NULL. The nest is now the entry edge to the region. (try_generate_gimple_bb): Likewise. * sese.c (scalar_evolution_in_region): Adjust for instantiate_scev change. * tree-data-ref.h (graphite_find_data_references_in_stmt): Make nest parameter the edge into the region. (create_data_ref): Likewise. * tree-data-ref.c (dr_analyze_indices): Make nest parameter an entry edge into a region and adjust instantiate_scev calls. (create_data_ref): Likewise. (graphite_find_data_references_in_stmt): Likewise. (find_data_references_in_stmt): Pass the loop preheader edge from the nest argument. * tree-scalar-evolution.h (instantiate_scev): Make instantiate_below parameter the edge into the region. (instantiate_parameters): Use the loop preheader edge as entry. * tree-scalar-evolution.c (analyze_scalar_evolution): Handle NULL loop. (get_instantiated_value_entry): Make instantiate_below parameter the edge into the region. (instantiate_scev_name): Likewise. Adjust dominance checks, when we cannot use loop-based instantiation instantiate by walking use-def chains. (instantiate_scev_poly): Adjust. (instantiate_scev_binary): Likewise. (instantiate_scev_convert): Likewise. (instantiate_scev_not): Likewise. (instantiate_array_ref): Remove. (instantiate_scev_3): Likewise. (instantiate_scev_2): Likewise. (instantiate_scev_1): Likewise. (instantiate_scev_r): Do not blindly handle N-operand trees. Do not instantiate array-refs. Handle all constants and invariants. (instantiate_scev): Make instantiate_below parameter the edge into the region. (resolve_mixers): Use the loop preheader edge for the region parameter to instantiate_scev_r. * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust. * gcc.dg/graphite/pr82451.c: New testcase. * gfortran.dg/graphite/id-27.f90: Likewise. * gfortran.dg/graphite/pr82451.f: Likewise. From-SVN: r253707
Richard Biener committed -
2017-10-13 Richard Biener <rguenther@suse.de> PR tree-optimization/82525 * graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split out from ... (translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here. Fail code generation when we cannot represent the isl integer. (binary_op_to_tree): Elide modulo operations that are no-ops in the type we code generate. Remove now superfluous code generation errors. * gcc.dg/graphite/id-30.c: New testcase. * gfortran.dg/graphite/id-28.f90: Likewise. From-SVN: r253706
Richard Biener committed -
2017-10-13 Richard Biener <rguenther@suse.de> * graphite-scop-detection.c (loop_ivs_can_be_represented): Remove. (scop_detection::harmful_loop_in_region): Remove premature IV type restriction. (scop_detection::graphite_can_represent_scev): We can handle pointer IVs just fine. From-SVN: r253705
Richard Biener committed -
From-SVN: r253704
GCC Administrator committed
-
- 12 Oct, 2017 26 commits
-
-
* doc/extend.texi (Extended Asm <Clobbers>): Rename to "Clobbers and Scratch Registers". Add paragraph on alternative to clobbers for scratch registers and OpenBLAS example. From-SVN: r253701
Alan Modra committed -
* doc/extend.texi (Clobbers): Correct vax example. Delete old example of a memory input for a string of known length. Move commentary out of table. Add a number of new examples covering array memory inputs. testsuite/ * gcc.target/i386/asm-mem.c: New test. From-SVN: r253700
Alan Modra committed -
re PR tree-optimization/82493 (UBSAN in gcc/sbitmap.c:368:28: runtime error: shift exponent 64 is too large for 64-bit type 'long unsigned int') PR tree-optimization/82493 * sbitmap.c (bitmap_bit_in_range_p): Fix the implementation. (test_range_functions): New function. (sbitmap_c_tests): Likewise. * selftest-run-tests.c (selftest::run_tests): Run new tests. * selftest.h (sbitmap_c_tests): New function. * tree-ssa-dse.c (live_bytes_read): Fix thinko. From-SVN: r253699
Martin Liska committed -
From-SVN: r253696
Michael Meissner committed -
PR target/82498 * config/i386/i386.md (*ashl<mode>3_mask_1, *<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1, *<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split patterns. * gcc.target/i386/pr82498-1.c: New test. * gcc.target/i386/pr82498-2.c: New test. From-SVN: r253695
Jakub Jelinek committed -
We were looking for the " = " before the optional package name that appears for an indirect reference, but the exporter was putting it after. Test is https://golang.org/cl/70290. Reviewed-on: https://go-review.googlesource.com/70330 From-SVN: r253694
Ian Lance Taylor committed -
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00784.html * cp-tree.h (cp_expr): Add const operator * and operator-> accessors. (cp_tree_node_structure_enum): Delete TS_CP_BINDING, TS_CP_WRAPPER, LAST_TS_CP_ENUM. From-SVN: r253693
Nathan Sidwell committed -
* profile-count.c (safe_scale_64bit): Fix GCC4.x path. (profile_probability): Set max_probability to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows in temporaries. * profile-count.c (profile_probability::differs_from_p): Do not rely on max_probaiblity == 10000 * gcc.dg/predict-13.c: Update template for probaility change. * gcc.dg/predict-8.c: Likewise. From-SVN: r253692
Jan Hubicka committed -
* tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with negative offsets. From-SVN: r253691
Jeff Law committed -
The patch improves our C/C++ frontends' handling of missing symbols, by making c_parser_require and cp_parser_require use "better" locations for the diagnostic, and insert fix-it hints, under certain circumstances (see the comments in the patch for full details). For example, for this code with a missing semicolon: $ cat test.c int missing_semicolon (void) { return 42 } trunk currently emits: test.c:4:1: error: expected ';' before '}' token } ^ This patch adds a fix-it hint for the missing semicolon, and puts the error at the location of the missing semicolon, printing the followup token as a secondary location: test.c:3:12: error: expected ';' before '}' token return 42 ^ ; } ~ More examples can be seen in the test cases. gcc/c-family/ChangeLog: * c-common.c (enum missing_token_insertion_kind): New enum. (get_missing_token_insertion_kind): New function. (maybe_suggest_missing_token_insertion): New function. * c-common.h (maybe_suggest_missing_token_insertion): New decl. gcc/c/ChangeLog: * c-parser.c (c_parser_require): Add "type_is_unique" param and use it to guard calls to maybe_suggest_missing_token_insertion. (c_parser_parms_list_declarator): Override default value of new "type_is_unique" param to c_parser_require. (c_parser_asm_statement): Likewise. * c-parser.h (c_parser_require): Add "type_is_unique" param, defaulting to true. gcc/cp/ChangeLog: * parser.c (get_required_cpp_ttype): New function. (cp_parser_error_1): Call it, using the result to call maybe_suggest_missing_token_insertion. gcc/testsuite/ChangeLog: * c-c++-common/cilk-plus/AN/parser_errors.c: Update expected output to reflect changes to reported locations of missing symbols. * c-c++-common/cilk-plus/AN/parser_errors2.c: Likewise. * c-c++-common/cilk-plus/AN/parser_errors3.c: Likewise. * c-c++-common/cilk-plus/AN/pr61191.c: Likewise. * c-c++-common/gomp/pr63326.c: Likewise. * c-c++-common/missing-close-symbol.c: Likewise, also update for new fix-it hints. * c-c++-common/missing-symbol.c: Likewise, also add test coverage for missing colon in ternary operator. * g++.dg/cpp1y/digit-sep-neg.C: Likewise. * g++.dg/cpp1y/pr65202.C: Likewise. * g++.dg/missing-symbol-2.C: New test case. * g++.dg/other/do1.C: Update expected output to reflect changes to reported locations of missing symbols. * g++.dg/parse/error11.C: Likewise. * g++.dg/template/error11.C: Likewise. * gcc.dg/missing-symbol-2.c: New test case. * gcc.dg/missing-symbol-3.c: New test case. * gcc.dg/noncompile/940112-1.c: Update expected output to reflect changes to reported locations of missing symbols. * gcc.dg/noncompile/971104-1.c: Likewise. * obj-c++.dg/exceptions-6.mm: Likewise. * obj-c++.dg/pr48187.mm: Likewise. * objc.dg/exceptions-6.m: Likewise. From-SVN: r253690
David Malcolm committed -
PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041 segfault on powerpc64 PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041 segfault on powerpc64 PR c/82435 - new __attribute__((alias)) warning gets in the way gcc/ChangeLog: PR other/82301 PR c/82435 * cgraphunit.c (maybe_diag_incompatible_alias): New function. (handle_alias_pairs): Call it. * common.opt (-Wattribute-alias): New option. * doc/extend.texi (ifunc attribute): Discuss C++ specifics. * doc/invoke.texi (-Wattribute-alias): Document. gcc/testsuite/ChangeLog: PR other/82301 PR c/82435 * g++.dg/ext/attr-ifunc-1.C: Update. * g++.dg/ext/attr-ifunc-2.C: Same. * g++.dg/ext/attr-ifunc-3.C: Same. * g++.dg/ext/attr-ifunc-4.C: Same. * g++.dg/ext/attr-ifunc-5.C: Same. * g++.dg/ext/attr-ifunc-6.C: New test. * g++.old-deja/g++.abi/vtable2.C: Update. * gcc.dg/attr-ifunc-6.c: New test. * gcc.dg/attr-ifunc-7.c: New test. * gcc.dg/pr81854.c: Update. * lib/target-supports.exp: Update. From-SVN: r253688
Martin Sebor committed -
In r251026 (aka 3fe34694f0990d1d649711ede0326497f8a849dc, "C/C++: show pertinent open token when missing a close token") I copied part of cp_parser_error into cp_parser_required_error, leading to duplication of code. This patch eliminates this duplication by merging the two copies of the code into a new cp_parser_error_1 subroutine. Doing so removes an indentation level, making the patch appear to have more churn than it really does. The patch also undoes the change to g++.dg/parse/pragma2.C, as the old behavior is restored. From-SVN: r253686
David Malcolm committed -
2017-10-12 Vladimir Makarov <vmakarov@redhat.com> Revert 2017-10-11 Vladimir Makarov <vmakarov@redhat.com> PR sanitizer/82353 * lra.c (collect_non_operand_hard_regs): Don't ignore operator locations. * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up. (make_hard_regno_born, make_hard_regno_dead): Update bb_killed_pseudos and bb_gen_pseudos. From-SVN: r253685
Vladimir Makarov committed -
From-SVN: r253684
Jan Hubicka committed -
* config/alpha/alpha.c (alpha_split_conditional_move): Use std::swap instead of manually swapping. (alpha_stdarg_optimize_hook): Ditto. (alpha_canonicalize_comparison): Ditto. From-SVN: r253681
Uros Bizjak committed -
* tree-loop-distribution.c (struct builtin_info): New struct. (struct partition): Refactor fields into struct builtin_info. (partition_free): Free struct builtin_info. (build_size_arg_loc, build_addr_arg_loc): Delete. (generate_memset_builtin, generate_memcpy_builtin): Get memory range information from struct builtin_info. (find_single_drs): New function refactored from classify_partition. Also moved builtin validity checks to this function. (compute_access_range, alloc_builtin): New functions. (classify_builtin_st, classify_builtin_ldst): New functions. (classify_partition): Refactor code into functions find_single_drs, classify_builtin_st and classify_builtin_ldst. (distribute_loop): Don't do runtime alias check when distributing loop nest. (find_seed_stmts_for_distribution): New function. (pass_loop_distribution::execute): Refactor code finding seed stmts into above function. Support distribution for the innermost two-level loop nest. Adjust dump information. gcc/testsuite * gcc.dg/tree-ssa/ldist-28.c: New test. * gcc.dg/tree-ssa/ldist-29.c: New test. * gcc.dg/tree-ssa/ldist-30.c: New test. * gcc.dg/tree-ssa/ldist-31.c: New test. From-SVN: r253680
Bin Cheng committed -
* tree-loop-distribution.c: Adjust the general comment. (NUM_PARTITION_THRESHOLD): New macro. (ssa_name_has_uses_outside_loop_p): Support loop nest distribution. (classify_partition): Skip builtin pattern of loop nest's inner loop. (merge_dep_scc_partitions): New parameter ignore_alias_p and use it in call to build_partition_graph. (finalize_partitions): New parameter. Make loop distribution more conservative by fusing more partitions. (distribute_loop): Don't do runtime alias check in case of loop nest distribution. (find_seed_stmts_for_distribution): New function. (prepare_perfect_loop_nest): New function. (pass_loop_distribution::execute): Refactor code finding seed stmts and loop nest into above functions. Support loop nest distribution. Adjust dump information accordingly. gcc/testsuite * gcc.dg/tree-ssa/ldist-7.c: Adjust test string. * gcc.dg/tree-ssa/ldist-16.c: Ditto. * gcc.dg/tree-ssa/ldist-25.c: Ditto. * gcc.dg/tree-ssa/ldist-33.c: New test. From-SVN: r253679
Bin Cheng committed -
tree-loop-distribution.c (break_alias_scc_partitions): Add comment and set PTYPE_SEQUENTIAL for merged partition. * tree-loop-distribution.c (break_alias_scc_partitions): Add comment and set PTYPE_SEQUENTIAL for merged partition. From-SVN: r253678
Bin Cheng committed -
re PR tree-optimization/69728 (internal compiler error: in outer_projection_mupa, at graphite-sese-to-poly.c:1175) 2017-10-12 Richard Biener <rguenther@suse.de> PR tree-optimization/69728 Revert 2017-09-19 Richard Biener <rguenther@suse.de> PR tree-optimization/69728 * graphite-sese-to-poly.c (schedule_error): New global. (add_loop_schedule): Handle empty domain by failing the schedule. (build_original_schedule): Handle schedule_error. * graphite-sese-to-poly.c (add_loop_schedule): Handle empty domain by returning an unchanged schedule. * gcc.dg/graphite/pr69728.c: Adjust to reflect we can handle the loop now. Remove unrelated undefined behavior. From-SVN: r253677
Richard Biener committed -
genrecog.c (validate_pattern): For VEC_SELECT verify that CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1. * genrecog.c (validate_pattern): For VEC_SELECT verify that CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1. From-SVN: r253676
Jakub Jelinek committed -
* Makefile.in (TAGS): Merge all the *.def files into one pattern. Handle params.def. From-SVN: r253674
Aldy Hernandez committed -
PR c++/82159 * expr.c (store_field): Don't optimize away bitsize == 0 store from CALL_EXPR with addressable return type. * g++.dg/opt/pr82159-2.C: New test. From-SVN: r253673
Jakub Jelinek committed -
PR target/82353 * gcc.target/i386/i386.exp (tests): Revert the '.C' extension change. * gcc.target/i386/pr82353.C: Moved to ... * g++.dg/ubsan/pr82353.C: ... here. Restrict to i?86/x86_64 && lp64. From-SVN: r253672
Jakub Jelinek committed -
TARGET_ISEL64 just means TARGET_ISEL && TARGET_POWERPC64. Since everywhere it is used uses :GPR already, we can just as well use TARGET_ISEL always. * config/rs6000/rs6000.h (TARGET_ISEL64): Delete. * config/rs6000/rs6000.md (sel): Delete mode attribute. (mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>, *isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use TARGET_ISEL instead of TARGET_ISEL<sel>. From-SVN: r253671
Segher Boessenkool committed -
From-SVN: r253670
GCC Administrator committed -
From-SVN: r253667
David Edelsohn committed
-
- 11 Oct, 2017 6 commits
-
-
go-system.h (__STDC_FORMAT_MACROS): Define before including any system header files, as is done in ../system.h. * go-system.h (__STDC_FORMAT_MACROS): Define before including any system header files, as is done in ../system.h. From-SVN: r253666
Tony Reix committed -
This removes output_isel. Instead, the define_insn's now output the isel instructions directly. It adds a reg_or_zero operand predicate, too, because the reg_or_cint predicate is too lax here. Also use it in the "reversed" variants of the instructions. * config/rs6000/predicates.md (zero_constant, all_ones_constant): Move up in file. (reg_or_cint_operand): Fix comment. (reg_or_zero_operand): New predicate. * config/rs6000/rs6000-protos.h (output_isel): Delete. * config/rs6000/rs6000.c (output_isel): Delete. * config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand instead of reg_or_cint_operand. Output instruction directly (not via output_isel). (isel_unsigned_<mode>): Ditto. (*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of gpc_reg_operand. Add an instruction alternative for this. Output instruction directly. (*isel_reversed_unsigned_<mode>): Ditto. From-SVN: r253665
Segher Boessenkool committed -
Reviewed-on: https://go-review.googlesource.com/69891 From-SVN: r253664
Ian Lance Taylor committed -
* config/i386/i386.c (ix86_canonicalize_comparison): New function. (TARGET_CANONICALIZE_COMPARISON): Define. testsuite/ChangeLog: * gcc.target/i386/387-ficom-2.c: New test. From-SVN: r253663
Uros Bizjak committed -
PR middle-end/80421 * gcc.c-torture/execute/pr80421.c: New test. From-SVN: r253662
Jakub Jelinek committed -
PR tree-optimization/78558 * gcc.dg/vect/pr78558.c: New test. From-SVN: r253661
Jakub Jelinek committed
-