- 02 Feb, 2016 23 commits
-
-
* wide-int.cc (canonize_uhwi): New function. (wi::divmod_internal): Use it. From-SVN: r233092
Jakub Jelinek committed -
* gcc.target/i386/iamcu/test_empty_structs_and_unions.c: New test. From-SVN: r233090
H.J. Lu committed -
gcc/ * gimplify.c (omp_notice_variable): Add usage check. gcc/testsuite/ * c-c++-common/goacc/routine-5.c: Add tests. From-SVN: r233089
James Norris committed -
gcc/ChangeLog: * config/nvptx/nvptx.c (nvptx_print_operand): Treat LEU, GEU, LTU, GTU like LE, GE, LT, GT when emitting relational operator. gcc/testsuite/ChangeLog: * gcc.target/nvptx/unsigned-cmp.c: New test. From-SVN: r233088
Alexander Monakov committed -
* testsuite/libgomp.c/target-31.c: Fix testcase. From-SVN: r233087
Alexander Monakov committed -
* testsuite/libgomp.c/examples-4/teams-3.c: Add missing reduction clause. * testsuite/libgomp.c/examples-4/teams-4.c: Likewise. * testsuite/libgomp.fortran/examples-4/teams-3.f90: Add missing reduction and map clauses. * testsuite/libgomp.fortran/examples-4/teams-4.f90: Likewise. From-SVN: r233086
Alexander Monakov committed -
Improve TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS target hook. It turns out there is another case where the register allocator uses the union of register classes without checking that the cost of the resulting register class is lower than both (see https://gcc.gnu.org/ml/gcc-patches/2015-12/msg01765.html ). This happens when the cost of the best and alternative class are both lower than the memory cost. In this case we typically end up with ALL_REGS as the allocno class, which almost invariably results in bad allocations with many redundant int<->FP moves (which are expensive on various cores). AArch64 is affected by this significantly due to supporting many scalar integer operations in SIMD. Currently the TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS hook forces the class to GENERAL_REGS if the allocno class is ALL_REGS and the register has an integer mode. This is bad if the best class happens to be FP_REGS. To handle this case as well, an extra argument is needed in the hook to pass the best class. If the allocno class is ALL_REGS, but the best class isn't, we use the best class instead (rather than using the mode to force to GENERAL_REGS or FP_REGS). Previously this might happen: r79: preferred FP_REGS, alternative GENERAL_REGS, allocno GENERAL_REGS a1 (r79,l0) best GENERAL_REGS, allocno GENERAL_REGS a1(r79,l0) costs: CALLER_SAVE_REGS:5000,5000 GENERAL_REGS:5000,5000 FP_LO_REGS:0,0 FP_REGS:0,0 ALL_REGS:10000,10000 MEM:9000,9000 The proposed allocno is ALL_REGS (despite having the highest cost!) and is then forced by the hook to GENERAL_REGS because r79 has integer mode. However FP_REGS has the lowest cost. After this patch the choice is as follows: r79: preferred FP_REGS, alternative GENERAL_REGS, allocno FP_REGS a1 (r79,l0) best FP_REGS, allocno FP_REGS As a result it is now no longer a requirement to use register move costs that are larger than the memory move cost. So it will be feasible to use realistic costs for both without a huge penalty. 2016-02-02 Wilco Dijkstra <wdijkstr@arm.com> gcc/ * ira-costs.c (find_costs_and_classes): Add extra argument. * target.def (ira_change_pseudo_allocno_class): Add parameter. * targhooks.h (ira_change_pseudo_allocno_class): Likewise. * targhooks.c (ira_change_pseudo_allocno_class): Likewise. * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class) Add best_class parameter, and return it if not ALL_REGS. * config/mips/mips.c (mips_ira_change_pseudo_allocno_class): Add parameter. * doc/tm.texi (TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): Update target hook. From-SVN: r233084
Wilco Dijkstra committed -
When the cost of GENERAL_REGS and FP_REGS is identical, the register allocator always uses ALL_REGS even when it has a much higher cost. The hook changes the class to either FP_REGS or GENERAL_REGS depending on the mode of the register. This results in better register allocation overall, fewer spills and reduced codesize - particularly in SPEC2006 gamess. 2016-02-02 Wilco Dijkstra <wdijkstr@arm.com> gcc/ * config/aarch64/aarch64.c (TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): New define. (aarch64_ira_change_pseudo_allocno_class): New function. gcc/testsuite/ * gcc.target/aarch64/scalar_shift_1.c (test_corners_sisd_di): Improve force to SIMD register. (test_corners_sisd_si): Likewise. * gcc.target/aarch64/vect-ld1r-compile-fp.c: Remove scan-assembler check for ldr. From-SVN: r233083
Wilco Dijkstra committed -
From-SVN: r233082
James Norris committed -
PR target/67032 * config/i386/i386.c (geode_cost): Increase cost of MMX and SSE moves. From-SVN: r233079
Uros Bizjak committed -
* config/avr/avr.c (avr_option_override): Set PARAM_ALLOW_STORE_DATA_RACES to 1. From-SVN: r233078
Senthil Kumar Selvaraj committed -
2016-02-02 Claudiu Zissulescu <claziss@synopsys.com> * MAINTAINERS (Write After Approval): Add myself. From-SVN: r233077
Claudiu Zissulescu committed -
2016-02-02 Richard Biener <rguenther@suse.de> PR tree-optimization/69595 * match.pd: Add range test simplifications to true/false. * gcc.dg/Warray-bounds-17.c: New testcase. From-SVN: r233076
Richard Biener committed -
gcc/ * omp-builtins.def (BUILT_IN_GOACC_HOST_DATA): Remove. * omp-low.c (expand_omp_target): Use BUILT_IN_GOACC_DATA_START instead. libgomp/ * libgomp.map (GOACC_2.0): Remove GOACC_host_data. * oacc-parallel.c (GOACC_host_data): Remove function definition. From-SVN: r233074
Thomas Schwinge committed -
libgomp/ * testsuite/lib/libgomp.exp: Skip hsa offloading for OpenACC test cases. From-SVN: r233073
Thomas Schwinge committed -
libgomp/ * plugin/configfrag.ac (HSA_KMT_LIB, HSA_KMT_LDFLAGS): New variables. * testsuite/libgomp-test-support.exp.in (hsa_runtime_lib) (hsa_kmt_lib): Set variables. * testsuite/lib/libgomp.exp (libgomp_init): Use them to amend always_ld_library_path. * Makefile.in: Regenerate. * configure: Likewise. * testsuite/Makefile.in: Likewise. From-SVN: r233072
Thomas Schwinge committed -
libgomp/ * plugin/configfrag.ac (offload_additional_options) (offload_additional_lib_paths): Don't amend for hsa offloading. * configure: Regenerate. From-SVN: r233071
Thomas Schwinge committed -
libgomp/ * plugin/configfrag.ac: Don't configure for offloading target if we don't build the corresponding plugin. * configure: Regenerate. From-SVN: r233070
Thomas Schwinge committed -
2016-02-02 Richard Biener <rguenther@suse.de> PR tree-optimization/69606 * tree-ssa-math-opts.c (bswap_replace): Clear flow sensitive info on the result before moving a stmt. * gcc.dg/torture/pr69606.c: New testcase. From-SVN: r233069
Richard Biener committed -
gcc/ 2016-02-02 Yuri Rumyantsev <ysrumyan@gmail.com> PR middle-end/68542 * config/i386/i386.c (ix86_expand_branch): Add support for conditional branch with vector comparison. * config/i386/sse.md (VI48_AVX): New mode iterator. (define_expand "cbranch<mode>4): Add support for conditional branch with vector comparison. * tree-vect-loop.c (optimize_mask_stores): New function. * tree-vect-stmts.c (vectorizable_mask_load_store): Initialize has_mask_store field of vect_info. * tree-vectorizer.c (vectorize_loops): Invoke optimaze_mask_stores for vectorized loops having masked stores after vec_info destroy. * tree-vectorizer.h (loop_vec_info): Add new has_mask_store field and correspondent macros. (optimize_mask_stores): Add prototype. gcc/testsuite 2016-02-02 Yuri Rumyantsev <ysrumyan@gmail.com> PR middle-end/68542 * gcc.dg/vect/vect-mask-store-move-1.c: New test. * gcc.target/i386/avx2-vect-mask-store-move1.c: New test. From-SVN: r233068
Yuri Rumyantsev committed -
lqarx RT and stqcx. RS are valid only with even numbered gprs. The predicate to enforce this happens to allow a loophole, closed by this patch. PR target/69548 gcc/ * config/rs6000/predicates.md (quad_int_reg_operand): Don't allow subregs. gcc/testsuite/ * gcc.target/powerpc/pr69548.c: New test. From-SVN: r233065
Alan Modra committed -
From-SVN: r233064
GCC Administrator committed -
Since 4c4a180d lto has turned off flag_pic when linking a fixed position executable. So flag_pic is zero in rs6000_file_start. However, when we get to actually emitting code, flag_pic may be on again. This results in undefined references to ".LCTOC1". PR target/68662 * config/rs6000/rs6000.c (need_toc_init): New var, set it whenever toc_label_name used. (rs6000_file_start): Don't set up toc section here, (rs6000_output_function_epilogue): do so here instead, (rs6000_xcoff_file_start): and here. * config/rs6000/rs6000.md (load_toc_aix_si): Set need_toc_init. (load_toc_aix_di): Likewise. From-SVN: r233061
Alan Modra committed
-
- 01 Feb, 2016 17 commits
-
-
PR rtl-optimization/69592 * rtlanal.c (nonzero_bits_binary_arith_p): New inline function. (cached_nonzero_bits): Use it instead of ARITHMETIC_P. (num_sign_bit_copies_binary_arith_p): New inline function. (cached_num_sign_bit_copies): Use it instead of ARITHMETIC_P. * gcc.dg/pr69592.c: New test. From-SVN: r233059
Jakub Jelinek committed -
PR preprocessor/69543 PR c/69558 * c-pragma.c (handle_pragma_diagnostic): Pass input_location instead of loc to control_warning_option. * gcc.dg/pr69543.c: New test. * gcc.dg/pr69558.c: New test. From-SVN: r233058
Jakub Jelinek committed -
From-SVN: r233057
Uros Bizjak committed -
* g++.dg/other/anon5.C (dg-opetions): Use -gdwarf-2 instead of -g. From-SVN: r233056
Uros Bizjak committed -
From-SVN: r233054
Jeff Law committed -
PR tree-optimization/68580 * params.def (FSM_MAXIMUM_PHI_ARGUMENTS): New param. * tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths): Do not try to walk through large PHI nodes. From-SVN: r233053
Jeff Law committed -
ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Return false when count is incremented above limit... * ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Return false when count is incremented above limit, don't analyze further insns afterwards. From-SVN: r233050
Jakub Jelinek committed -
From-SVN: r233045
Martin Sebor committed -
* omp-low.c (oacc_parse_default_dims): Avoid -Wsign-compare warning, make sure value fits into int rather than just unsigned int. From-SVN: r233044
Jakub Jelinek committed -
re PR tree-optimization/67921 ("internal compiler error: in build_polynomial_chrec, at tree-chrec.h:147" when using -fsanitize=undefined) PR tree-optimization/67921 * fold-const.c (split_tree): New parameters. Convert pointer type variable part to proper type before negating. (fold_binary_loc): Pass new arguments to split_tree. gcc/testsuite/ChangeLog PR tree-optimization/67921 * c-c++-common/ubsan/pr67921.c: New test. From-SVN: r233042
Bin Cheng committed -
gcc/ * config/nvptx/nvptx.c (PTX_GANG_DEFAULT): New. (nvptx_goacc_validate_dims): Extend to handle global defaults. * target.def (OACC_VALIDATE_DIMS): Extend documentation. * doc/tm.texti: Rebuilt. * doc/invoke.texi (fopenacc-dim): Document. * lto-wrapper.c (merge_and_complain): Add OPT_fopenacc_dim_ case. (append_compiler_options): Likewise. * omp-low.c (oacc_default_dims, oacc_min_dims): New. (oacc_parse_default_dims): New. (oacc_validate_dims): Add USED arg. Select non-unity default when possible. (oacc_loop_fixed_partitions): Return mask of used partitions. (oacc_loop_auto_partitions): Emit dump info. (oacc_loop_partition): Return mask of used partitions. (execute_oacc_device_lower): Parse default dimension arg. Adjust loop partitioning and validation calls. gcc/c-family/ * c.opt (fopenacc-dim=): New option. gcc/fortran/ * lang.opt (fopenacc-dim=): New option. libgomp/ * testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c: New. * testsuite/libgomp.oacc-fortran/routine-7.f90: Serialize loop. From-SVN: r233041
Nathan Sidwell committed -
2016-02-01 Richard Biener <rguenther@suse.de> PR middle-end/69556 * match.pd: Guard (C1/X)*C2 -> (C1*C2)/X with single_use. * gcc.dg/tree-ssa/recip-8.c: New testcase. From-SVN: r233040
Richard Biener committed -
re PR tree-optimization/69574 (gcc ICE at -O2 and -O3 on x86_64-linux-gnu in hide_evolution_in_other_loops_than_loop) 2016-02-01 Richard Biener <rguenther@suse.de> PR tree-optimization/69574 * tree-chrec.c (hide_evolution_in_other_loops_than_loop): Instead of asserting return chrec_dont_know. * gcc.dg/torture/pr69574.c: New testcase. From-SVN: r233039
Richard Biener committed -
* mem-stats-traits.h: Add copyright header. * mem-stats.h: Likewise. From-SVN: r233037
Martin Liska committed -
re PR tree-optimization/69579 (gcc ICE at -O3 and __sigsetjmp with “tree check: expected ssa_name, have integer_cst in compute_optimized_partition_bases”) 2016-02-01 Richard Biener <rguenther@suse.de> PR tree-optimization/69579 * tree-ssa-loop-ivcanon.c (propagate_constants_for_unrolling): Do not propagate through abnormal PHI results. * gcc.dg/setjmp-6.c: New testcase. From-SVN: r233036
Richard Biener committed -
2016-02-01 Bernd Edlinger <bernd.edlinger@hotmail.de> PR libstdc++/69581 * include/c_compatibility/math.h: Move header guards. * include/c_compatibility/stdlib.h: Likewise. From-SVN: r233035
Bernd Edlinger committed -
From-SVN: r233034
Eric Botcazou committed
-