aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-05-27initial meld of work done in staging branchibm/rfc02464Kelvin Nilsen
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/ibm/rfc02464@236805 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26Branch to do development of rfc02464, which adds binary floating-point Kelvin Nilsen
support operations for Power architecture. (Restarting this branch with a new trunk, since the new trunk has the P9 bulitin infrastructure.) git-svn-id: https://gcc.gnu.org/svn/gcc/branches/ibm/rfc02464@236800 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26[gcc]Michael Meissner
2016-05-26 Michael Meissner <meissner@linux.vnet.ibm.com> * config/rs6000/rs6000.c (rs6000_emit_p9_fp_minmax): New function for ISA 3.0 min/max support. (rs6000_emit_p9_fp_cmove): New function for ISA 3.0 floating point conditional move support. (rs6000_emit_cmove): Call rs6000_emit_p9_fp_minmax and rs6000_emit_p9_fp_cmove if the ISA 3.0 instructions are available. * config/rs6000/rs6000.md (SFDF2): New iterator to allow doing conditional moves where the comparison type is different from move type. (fp_minmax): New code iterator for smin/smax. (minmax): New code attributes for min/max. (SMINMAX): Likewise. (smax<mode>3): Combine min, max insns into one insn using the fp_minmax code iterator. Add support for ISA 3.0 min/max instructions that don't need -ffast-math. (s<minmax><mode>3): Likewise. (smax<mode>3_vsx): Likewise. (smin<mode>3): Likewise. (s<minmax><mode>3_vsx): Likewise. (smin<mode>3_vsx): Likewise. (pre-VSX min/max splitters): Likewise. (s<minmax><mode>3_fpr): Likewise. (movsfcc): Rewrite floating point conditional moves to combine SFmode/DFmode into a single insn. (mov<mode>cc): Likewise. (movdfcc): Likewise. (fselsfsf4): Combine FSEL cases into a single insn, using SFDF and SFDF2 iterators to handle all combinations. (fseldfsf4): Likewise. (fsel<SFDF:mode><SFDF2:mode>4): Likewise. (fseldfdf4): Likewise. (fselsfdf4): Likewise. (mov<SFDF:mode><SFDF2:mode>cc_p9): Add support for the ISA 3.0 comparison instructions that set a 0/-1 mask, and use it for floating point conditional move via XXSEL. (fpmask<mode>): Likewise. (xxsel<mode>): Likewise. * config/rs6000/predicates.md (min_max_operator): Delete, no longer used. (fpmask_comparison_operaton): New insn for ISA 3.0 comparison instructions that generate a 0/-1 mask for use with XXSEL. * config/rs6000/rs6000.h (TARGET_MINMAX_SF): New helper macros to say whether floating point min/max is available, either through FSEL, ISA 2.06 min/max, and ISA 3.0 min/max instrucitons. (TARGET_MINMAX_DF): Likewise. [gcc/testsuite] 2016-05-26 Michael Meissner <meissner@linux.vnet.ibm.com> * gcc.target/powerpc/p9-minmax-1.c: New tests for ISA 3.0 floating point min/max/comparison instructions. * gcc.target/powerpc/p9-minmax-2.c: Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236795 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26 * c-parser.c (c_parser_omp_clause_schedule): Warn ifJakub Jelinek
OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive. * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive. * openmp.c (resolve_omp_clauses): Warn if chunk_size is known not to be positive. * c-c++-common/gomp/schedule-1.c: New test. * gfortran.dg/gomp/schedule-1.f90: New test. * testsuite/libgomp.c/doacross-1.c (main): Use schedule(static) instead of invalid schedule(static, 0). * testsuite/libgomp.c/doacross-2.c (main): Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236793 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26Fix PR c++/70822 (bogus error with parenthesized SCOPE_REF)Patrick Palka
gcc/cp/ChangeLog: PR c++/70822 PR c++/70106 * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to SCOPE_REFs too. * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set on the qualified_id then propagate it to the resulting expression. (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs too. * semantics.c (force_paren_expr): If given a SCOPE_REF, just set its REF_PARENTHESIZED_P flag. gcc/testsuite/ChangeLog: PR c++/70822 PR c++/70106 * g++.dg/cpp1y/auto-fn32.C: New test. * g++.dg/cpp1y/paren4.C: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236792 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26ira.c bb_loop_depthAlan Modra
PR rtl-optimization/71275 * ira.c (ira): Call loop_optimizer_init to set up bb_loop_depth for update_equiv_regs and combine_and_move_insns. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236789 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26 * config/i386/i386.md (*movqi_internal) <attr "isa">: UseUros Bizjak
if_then_else or cond RTXes to calculate attribute value. * config/i386/mmx.md (*vec_extractv2sf_1) <attr "prefix_rep">: Ditto. <attr "length_immediate>: Ditto. (*vec_extractv2sf_1) <attr "length_immediate">: Ditto. * config/i386/sse.md (sse_loadlps) <attr "length_immediate">: Ditto. (*vec_concatv2sf_sse4_1) <attr "isa">: Ditto. <attr "type">: Ditto. <attr "prefix_data16">: Ditto. <attr "prefix_extra">: Ditto. <attr "length_immediate">: Ditto. <attr "prefix">: Ditto. (vec_set<mode>_0) <attr "isa">: Ditto. <attr "prefix_extra">: Ditto. <attr "length_immediate">: Ditto. <attr "prefix">: Ditto. (*vec_interleave_highv2df) <attr "prefix_data16">: Ditto. (*vec_interleave_lowv2df) <attr "prefix_data16">: Ditto. (sse2_storelpd) <attr "prefix_data16">: Ditto. (sse2_loadhpd) <attr "prefix_data16">: Ditto. (sse2_loadlpd) <attr "prefix_data16">: Ditto. <attr "length_immediate">: Ditto. <attr "prefix">: Ditto. (sse2_movsd) <attr "length_immediate">: Ditto. <attr "prefix">: Ditto. (vec_concatv2df) <attr "isa">: Ditto. <attr "prefix">: Ditto. (*vec_extractv4si) <attr "prefix_extra">: Ditto. (*vec_extractv2di_1) <attr "isa">: Ditto. <attr "type">: Ditto. <attr "length_immediate">: Ditto. <attr "prefix_rex">: Ditto. <attr "prefix_extra">: Ditto. (*vec_concatv2si_sse4_1) <attr "type">: Ditto. <attr "prefix_extra">: Ditto. <attr "length_immediate">: Ditto. (vec_concatv2di) <attr "isa">: Ditto. <attr "prefix_extra">: Ditto. <attr "length_immediate">: Ditto. <attr "prefix">: Ditto. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236787 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26IVOPTS: make comp_cost in a more c++ fashion.Martin Liska
* tree-ssa-loop-ivopts.c (comp_cost::infinite_cost_p): New function. (operator+): Likewise. (operator-): Likewise. (comp_cost::operator+=): Likewise. (comp_cost::operator-=): Likewise. (comp_cost::operator/=): Likewise. (comp_cost::operator*=): Likewise. (operator<): Likewise. (operator==): Likewise. (operator<=): Likewise. (new_cost): Remove. (infinite_cost_p): Likewise. (add_costs): Likewise. (sub_costs): Likewise. (compare_costs): Likewise. (set_group_iv_cost): Use the newly introduced functions. (get_address_cost): Likewise. (get_shiftadd_cost): Likewise. (force_expr_to_var_cost): Likewise. (split_address_cost): Likewise. (ptr_difference_cost): Likewise. (difference_cost): Likewise. (get_computation_cost_at): Likewise. (determine_group_iv_cost_generic): Likewise. (determine_group_iv_cost_address): Likewise. (determine_group_iv_cost_cond): Likewise. (autoinc_possible_for_pair): Likewise. (determine_group_iv_costs): Likewise. (cheaper_cost_pair): Likewise. (iv_ca_recount_cost): Likewise. (iv_ca_set_no_cp): Likewise. (iv_ca_set_cp): Likewise. (iv_ca_cost): Likewise. (iv_ca_new): Likewise. (iv_ca_dump): Likewise. (iv_ca_narrow): Likewise. (iv_ca_prune): Likewise. (iv_ca_replace): Likewise. (try_add_cand_for): Likewise. (try_improve_iv_set): Likewise. (find_optimal_iv_set): Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236785 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26Fix ivopts estimates for internal functionsRichard Sandiford
tree-ssa-loop-ivopts.c:loop_body_includes_call was treating internal calls such as IFN_SQRT as clobbering all caller-saved registers, which I don't think is appropriate for any current internal function. Tested on aarch64-linux-gnu and x86_64-linux-gnu. gcc/ * tree-ssa-loop-ivopts.c (loop_body_includes_call): Don't assume that internal functions will clobber all caller-saved registers. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236780 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26 * gcc.dg/20060410.c: Xfail on ptx.Nathan Sidwell
* gcc.dg/torture/c99-contract-1.c: Skip on ptx. * c-c++-common/torture/complex-sign-mixed-add.c: Skip on ptx -O0 * c-c++-common/torture/complex-sign-mixed-sub.c: Skip on ptx -O0 * gcc.c-torture/execute/pr68185.c: Skip on ptx -O0 & Os. * gcc.c-torture/execute/20020529-1.c: Skip on ptx -00. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236774 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26 * config/nvptx/free.asm: Delete.Nathan Sidwell
* config/nvptx/malloc.asm: Delete. * config/nvptx/realloc.c: Delete. * t-nvptx: Update. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236773 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-262016-05-26 Chung-Lin Tang <cltang@codesourcery.com>Chung-Lin Tang
libgomp/ * oacc-plugin.h (GOMP_PLUGIN_async_unmap_vars): Add int parameter. * oacc-plugin.c (GOMP_PLUGIN_async_unmap_vars): Add 'int async' parameter, use to set async stream around call to gomp_unmap_vars, call gomp_unmap_vars() with 'do_copyfrom' set to true. * plugin/plugin-nvptx.c (struct ptx_event): Add 'int val' field. (event_gc): Adjust event handling loop, collect PTX_EVT_ASYNC_CLEANUP events and call GOMP_PLUGIN_async_unmap_vars() for each of them. (event_add): Add int parameter, initialize 'val' field when adding new ptx_event struct. (nvptx_evec): Adjust event_add() call arguments. (nvptx_host2dev): Likewise. (nvptx_dev2host): Likewise. (nvptx_wait_async): Likewise. (nvptx_wait_all_async): Likewise. (GOMP_OFFLOAD_openacc_register_async_cleanup): Add async parameter, pass to event_add() call. * oacc-host.c (host_openacc_register_async_cleanup): Add 'int async' parameter. * oacc-mem.c (gomp_acc_remove_pointer): Adjust async case to call openacc.register_async_cleanup_func() hook. * oacc-parallel.c (GOACC_parallel_keyed): Likewise. * target.c (gomp_copy_from_async): Delete function. (gomp_map_vars): Remove async_refcount. (gomp_unmap_vars): Likewise. (gomp_load_image_to_device): Likewise. (omp_target_associate_ptr): Likewise. * libgomp.h (struct splay_tree_key_s): Remove async_refcount. (acc_dispatch_t.register_async_cleanup_func): Add int parameter. (gomp_copy_from_async): Remove. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236772 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26GCC expands switch statements in a very simplistic way and tries to use a tableWilco Dijkstra
expansion even when it is a bad idea for performance or codesize. GCC typically emits extremely sparse tables that contain mostly default entries (something which currently cannot be tuned by backends). Additionally the computation of the minimum/maximum label offsets is too simplistic so the tables are often twice as large as necessary. The cost of a table switch is significant due to the setup overhead, the table lookup (which due to being sparse and large adds unnecessary cachemisses) and hard to predict indirect jump. Therefore it is best to avoid using a table unless there are many real case labels. This patch fixes that by setting the default aarch64_case_values_threshold to 16 when the per-CPU tuning is not set. On SPEC2006 this improves the switch heavy benchmarks GCC and perlbench both in performance (1-2%) as well as size (0.5-1% smaller). gcc/ * config/aarch64/aarch64.c (aarch64_case_values_threshold): Return a better case_values_threshold when optimizing. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236771 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26SIMD operations like combine prefer to have their operands in FP registers,Wilco Dijkstra
so increase the cost of integer registers slightly to avoid unnecessary int<->FP moves. This improves register allocation of scalar SIMD operations. * config/aarch64/aarch64-simd.md (aarch64_combinez): Add ? to integer variant. (aarch64_combinez_be): Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236770 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26Skip tail call tests on Thumb-1 targetsThomas Preud'homme
2016-05-26 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/testsuite/ * gcc.dg/plugin/plugin.exp: skip tail call tests for Thumb-1. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236769 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26libgomp/Chung-Lin Tang
2016-05-26 Chung-Lin Tang <cltang@codesourcery.com> * target.c (gomp_device_copy): New function. (gomp_copy_host2dev): Likewise. (gomp_copy_dev2host): Likewise. (gomp_free_device_memory): Likewise. (gomp_map_vars_existing): Adjust to call gomp_copy_host2dev. (gomp_map_pointer): Likewise. (gomp_map_vars): Adjust to call gomp_copy_host2dev, handle NULL value from alloc_func plugin hook. (gomp_unmap_tgt): Adjust to call gomp_free_device_memory. (gomp_copy_from_async): Adjust to call gomp_copy_dev2host. (gomp_unmap_vars): Likewise. (gomp_update): Adjust to call gomp_copy_dev2host and gomp_copy_host2dev functions. (gomp_unload_image_from_device): Handle false value from unload_image_func plugin hook. (gomp_init_device): Handle false value from init_device_func plugin hook. (gomp_exit_data): Adjust to call gomp_copy_dev2host. (omp_target_free): Adjust to call gomp_free_device_memory. (omp_target_memcpy): Handle return values from host2dev_func, dev2host_func, and dev2dev_func plugin hooks. (omp_target_memcpy_rect_worker): Likewise. (gomp_target_fini): Handle false value from fini_device_func plugin hook. * libgomp.h (struct gomp_device_descr): Adjust return type of init_device_func, fini_device_func, unload_image_func, free_func, dev2host_func,host2dev_func, and dev2dev_func plugin hooks to 'bool'. * oacc-init.c (acc_shutdown_1): Handle false value from fini_device_func plugin hook. * oacc-host.c (host_init_device): Change return type to bool. (host_fini_device): Likewise. (host_unload_image): Likewise. (host_free): Likewise. (host_dev2host): Likewise. (host_host2dev): Likewise. * oacc-mem.c (acc_free): Handle plugin hook fatal error case. (acc_memcpy_to_device): Likewise. (acc_memcpy_from_device): Likewise. (delete_copyout): Add libfnname parameter, handle free_func hook fatal error case. (acc_delete): Adjust delete_copyout call. (acc_copyout): Likewise. (update_dev_host): Move gomp_mutex_unlock to after host2dev/dev2host hook calls. * plugin/plugin-hsa.c (hsa_warn): Adjust 'hsa_error' local variable to 'hsa_error_msg', for clarity. (hsa_fatal): Likewise. (hsa_error): New function. (init_hsa_context): Change return type to bool, adjust to return false on error. (GOMP_OFFLOAD_get_num_devices): Adjust to handle init_hsa_context return value. (GOMP_OFFLOAD_init_device): Change return type to bool, adjust to return false on error. (get_agent_info): Adjust to return NULL on error. (destroy_hsa_program): Change return type to bool, adjust to return false on error. (GOMP_OFFLOAD_load_image): Adjust to return -1 on error. (destroy_module): Change return type to bool, adjust to return false on error. (GOMP_OFFLOAD_unload_image): Likewise. (GOMP_OFFLOAD_fini_device): Likewise. (GOMP_OFFLOAD_alloc): Change to return NULL when called. (GOMP_OFFLOAD_free): Change to return false when called. (GOMP_OFFLOAD_dev2host): Likewise. (GOMP_OFFLOAD_host2dev): Likewise. (GOMP_OFFLOAD_dev2dev): Likewise. * plugin/plugin-nvptx.c (CUDA_CALL_ERET): New convenience macro. (CUDA_CALL): Likewise. (CUDA_CALL_ASSERT): Likewise. (map_init): Change return type to bool, use CUDA_CALL* macros. (map_fini): Likewise. (init_streams_for_device): Change return type to bool, adjust call to map_init. (fini_streams_for_device): Change return type to bool, adjust call to map_fini. (select_stream_for_async): Release stream_lock before calls to GOMP_PLUGIN_fatal, adjust call to map_init. (nvptx_init): Use CUDA_CALL* macros. (nvptx_attach_host_thread_to_device): Change return type to bool, use CUDA_CALL* macros. (nvptx_open_device): Use CUDA_CALL* macros. (nvptx_close_device): Change return type to bool, use CUDA_CALL* macros. (nvptx_get_num_devices): Use CUDA_CALL* macros. (link_ptx): Change return type to bool, use CUDA_CALL* macros. (nvptx_exec): Use CUDA_CALL* macros. (nvptx_alloc): Use CUDA_CALL* macros. (nvptx_free): Change return type to bool, use CUDA_CALL* macros. (nvptx_host2dev): Likewise. (nvptx_dev2host): Likewise. (nvptx_wait): Use CUDA_CALL* macros. (nvptx_wait_async): Likewise. (nvptx_wait_all): Likewise. (nvptx_wait_all_async): Likewise. (nvptx_set_cuda_stream): Adjust order of stream_lock acquire, use CUDA_CALL* macros, adjust call to map_fini. (GOMP_OFFLOAD_init_device): Change return type to bool, adjust code accordingly. (GOMP_OFFLOAD_fini_device): Likewise. (GOMP_OFFLOAD_load_image): Adjust calls to nvptx_attach_host_thread_to_device/link_ptx to handle errors, use CUDA_CALL* macros. (GOMP_OFFLOAD_unload_image): Change return type to bool, adjust return code. (GOMP_OFFLOAD_alloc): Adjust calls to code to handle error return. (GOMP_OFFLOAD_free): Change return type to bool, adjust calls to handle error return. (GOMP_OFFLOAD_dev2host): Likewise. (GOMP_OFFLOAD_host2dev): Likewise. (GOMP_OFFLOAD_openacc_register_async_cleanup): Use CUDA_CALL* macros. (GOMP_OFFLOAD_openacc_create_thread_data): Likewise. liboffloadmic/ 2016-05-26 Chung-Lin Tang <cltang@codesourcery.com> * plugin/libgomp-plugin-intelmic.cpp (offload): Change return type to bool, adjust return code. (GOMP_OFFLOAD_init_device): Likewise. (GOMP_OFFLOAD_fini_device): Likewise. (get_target_table): Likewise. (offload_image): Likwise. (GOMP_OFFLOAD_load_image): Adjust call to offload_image(), change to return -1 on error. (GOMP_OFFLOAD_unload_image): Change return type to bool, adjust return code. (GOMP_OFFLOAD_alloc): Likewise. (GOMP_OFFLOAD_free): Likewise. (GOMP_OFFLOAD_host2dev): Likewise. (GOMP_OFFLOAD_dev2host): Likewise. (GOMP_OFFLOAD_dev2dev): Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236768 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26 PR tree-optimization/71280Jakub Jelinek
* gcc.dg/pr71280.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236767 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-262016-05-26 Chung-Lin Tang <cltang@codesourcery.com>Chung-Lin Tang
include/ * gomp-constants.h (GOMP_VERSION): Increment to 1, add comment to describe the need for incrementing this macro whenever the plugin interface is modified. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236766 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26 * config/i386/sse.md (*vcvtps2ph_store<mask_name>): Use v constraintJakub Jelinek
instead of x constraint. (vcvtps2ph256<mask_name>): Likewise. * gcc.target/i386/avx512vl-vcvtps2ph-3.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236765 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26 * config/i386/sse.md (*ssse3_palignr<mode>_perm): Add avx512bwJakub Jelinek
alternative. Formatting fix. * gcc.target/i386/avx512bw-vpalignr-4.c: New test. * gcc.target/i386/avx512vl-vpalignr-4.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236764 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26 * config/i386/sse.mdJakub Jelinek
(<mask_codefor>avx512vl_shuf_<shuffletype>32x4_1<mask_name>): Rename to ... (avx512vl_shuf_<shuffletype>32x4_1<mask_name>): ... this. (*avx_vperm_broadcast_v4sf): Use v constraint instead of x. Use maybe_evex prefix instead of vex. (*avx_vperm_broadcast_<mode>): Use v constraint instead of x. Handle EXT_REX_SSE_REG_P (op0) case in the splitter. * gcc.target/i386/avx512vl-vbroadcast-3.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236763 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26[AArch64, testsuite] Fix vmul_elem_1.c on big-endianJiong Wang
gcc/testsuite/ * gcc.target/aarch64/simd/vmul_elem_1.c: Force result variables to be kept in memory. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236762 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-26Daily bump.GCC Administrator
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236761 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 PR tree-optimization/71272Jeff Law
* tree-ssa-threadbackward.c (convert_and_register_jump_thread_path): Update comments. Add test for empty path. PR tree-optimization/71272 * gcc.c-torture/compile/pr71272.c: new test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236755 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25This patch adds support for the vec_cmpne altivec builtins from the PowerBill Seurer
Architecture 64-Bit ELF V2 ABI OpenPOWER ABI for Linux Supplement (16 July 2015 Version 1.1). There are many of the builtins that are missing and this is part of a series of patches to add them. There aren't instructions for vec_cmpne so the output code is built from other built-ins that do have instructions which in this case is the following. vec_cmpneq (va, vb) == vec_nor (vec_cmpeq (va, vb), vec_cmpeq (va, vb)) The new test cases are executable tests which verify that the generated code produces expected values. C macros were used so that the same test case could be used for both the signed and unsigned versions of various basic types. A separate executable test case is used for the long long versions of vec_cmpne because of some differences in loading and storing the vectors. [gcc] 2016-05-25 Bill Seurer <seurer@linux.vnet.ibm.com> * config/rs6000/altivec.h (vec_cmpne): Add #define for vec_cmpne. * config/rs6000/rs6000-builtin.def (vec_cmpne): Add vec_cmpne as a special case builtin. * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add code for ALTIVEC_BUILTIN_VEC_CMPNE. * config/rs6000/rs6000.c (altivec_init_builtins): Add definition for __builtin_vec_cmpne. [gcc/testsuite] 2016-05-25 Bill Seurer <seurer@linux.vnet.ibm.com> * gcc.target/powerpc/vec-cmpne.c: New test. * gcc.target/powerpc/vec-cmpne-long.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236753 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 * tree-ssa-phiopt.c (factor_out_conditional_conversion): RemoveEric Botcazou
redundant test and bail out if the type of the new operand is not a GIMPLE register type after stripping a VIEW_CONVERT_EXPR. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236748 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-252016-05-25 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>Senthil Kumar Selvaraj
* c-c++-common/Wduplicated-cond-1.c: Use smaller const literal. * c-c++-common/pr60226.c: Require int32plus. * gcc.c-torture/execute/pr70602.c: Likewise. * gcc.dg/Warray-bounds-11.c: Use __SIZE_TYPE__ instead of unsigned long for malloc arg type. * gcc.dg/asr_div1.c: Require int32plus. * gcc.dg/enum-mode-1.c: XFAIL for int16. * gcc.dg/pie-1.c: Require pie. * gcc.dg/pie-2.c: Likewise. * gcc.dg/pr59471.c: Require int32plus. * gcc.dg/pr59963-2.c: XFAIL for int16. * gcc.dg/pr60114.c: Require int32plus. * gcc.dg/pr62090-2.c: Use __SIZE_TYPE__ instead of unsigned long for typedef of size_t. * gcc.dg/pr63914.c: Require int32plus. * gcc.dg/pr64536.c: Require pt32plus. * gcc.dg/pr65658.c: Likewise. * gcc.dg/pr67271.c: Require int32plus. * gcc.dg/pr68112.c: Likewise. * gcc.dg/pr69071.c: Skip for avr target. * gcc.dg/pr69973.c: Require int32plus. * gcc.dg/pr70169.c: Skip for avr target. * gcc.dg/sso-6.c: Require int32plus. * gcc.dg/sso-7.c: Likewise. * gcc.dg/sso-8.c: Likewise. * gcc.dg/vrp-min-max-2.c: Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236741 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 PR target/70738Uros Bizjak
* common/config/i386/i386-common.c (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): New. (ix86_handle_option) <case OPT_mgeneral_regs_only>: Disable MPX, MMX, SSE and x87 instructions for -mgeneral-regs-only. * config/i386/i386.opt (ix86_target_flags): Add new Variable. (-mgeneral-regs-only): Add new option. * config/i386/i386.c (ix86_option_override_internal): Don't enable x87 instructions if only general registers are allowed. (ix86_target_string): Add ix86_flags argument. Handle additional flags options through ix86_flags argument. Update all callers. * doc/invoke.texi: Document -mgeneral-regs-only. testsuite/ChangeLog: PR target/70738 * gcc.target/i386/pr70738-1.c: New test. * gcc.target/i386/pr70738-2.c: Likewise. * gcc.target/i386/pr70738-3.c: Likewise. * gcc.target/i386/pr70738-4.c: Likewise. * gcc.target/i386/pr70738-5.c: Likewise. * gcc.target/i386/pr70738-6.c: Likewise. * gcc.target/i386/pr70738-7.c: Likewise. * gcc.target/i386/pr70738-8.c: Likewise. * gcc.target/i386/pr70738-9.c: Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236738 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25Fix comment.Jason Merrill
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236737 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 PR c++/71173 - wrong qualified lookupJason Merrill
PR c++/70522 * cp-tree.h (enum tag_types): Add scope_type. * parser.c (cp_parser_class_name): Use scope_type. (prefer_type_arg): Handle scope_type. (cp_parser_lookup_name): Use prefer_type_arg. * name-lookup.c (lookup_qualified_name): Change bool is_type_p to int prefer_type, use lookup_flags. * name-lookup.h: Adjust. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236736 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 * ru.po: Update.Joseph Myers
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236732 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25Fix configure test for sendfile()Jonathan Wakely
* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Fix test for sendfile. * configure: Regenerate. * config.h.in: Regenerate. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236730 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25[RTL ifcvt] PR rtl-optimization/66940: Avoid signed overflow in ↵Kyrylo Tkachov
noce_get_alt_condition PR rtl-optimization/66940 * ifcvt.c (noce_get_alt_condition): Check that incrementing or decrementing desired_val will not overflow before performing these operations. * gcc.c-torture/execute/pr66940.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236728 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25AVX-512F: Add vectorizer support builtinsIlya Verbin
gcc/ * config/i386/i386-builtin-types.def: Add V16SI_FTYPE_V16SF, V8DF_FTYPE_V8DF_ROUND, V16SF_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF_ROUND. * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_CVTPS2DQ512_MASK, IX86_BUILTIN_FLOORPS512, IX86_BUILTIN_FLOORPD512, IX86_BUILTIN_CEILPS512, IX86_BUILTIN_CEILPD512, IX86_BUILTIN_TRUNCPS512, IX86_BUILTIN_TRUNCPD512, IX86_BUILTIN_CVTPS2DQ512, IX86_BUILTIN_VEC_PACK_SFIX512, IX86_BUILTIN_FLOORPS_SFIX512, IX86_BUILTIN_CEILPS_SFIX512, IX86_BUILTIN_ROUNDPS_AZ_SFIX512. (builtin_description bdesc_args): Add __builtin_ia32_floorps512, __builtin_ia32_ceilps512, __builtin_ia32_truncps512, __builtin_ia32_floorpd512, __builtin_ia32_ceilpd512, __builtin_ia32_truncpd512, __builtin_ia32_cvtps2dq512, __builtin_ia32_vec_pack_sfix512, __builtin_ia32_roundps_az_sfix512, __builtin_ia32_floorps_sfix512, __builtin_ia32_ceilps_sfix512. Change IX86_BUILTIN_CVTPS2DQ512 to IX86_BUILTIN_CVTPS2DQ512_MASK for __builtin_ia32_cvtps2dq512_mask. (ix86_expand_args_builtin): Handle V8DF_FTYPE_V8DF_ROUND, V16SF_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF_ROUND, V16SI_FTYPE_V16SF. (ix86_builtin_vectorized_function): Handle builtins mentioned above. * config/i386/sse.md (<mask_codefor>avx512f_fix_notruncv16sfv16si<mask_name><round_name>): Rename to ... (avx512f_fix_notruncv16sfv16si<mask_name><round_name>): ... this. (<mask_codefor>avx512f_cvtpd2dq512<mask_name><round_name>): Rename to ... (avx512f_cvtpd2dq512<mask_name><round_name>): ... this. (avx512f_vec_pack_sfix_v8df): New define_expand. (avx512f_roundpd512): Rename to ... (avx512f_round<castmode>512): ... this. Change iterator. (avx512f_roundps512_sfix): New define_expand. (round<mode>2_sfix): Change iterator. gcc/testsuite/ * gcc.target/i386/avx512f-ceil-vec-1.c: New test. * gcc.target/i386/avx512f-ceil-vec-2.c: New test. * gcc.target/i386/avx512f-ceilf-sfix-vec-1.c: New test. * gcc.target/i386/avx512f-ceilf-sfix-vec-2.c: New test. * gcc.target/i386/avx512f-ceilf-vec-1.c: New test. * gcc.target/i386/avx512f-ceilf-vec-2.c: New test. * gcc.target/i386/avx512f-floor-vec-1.c: New test. * gcc.target/i386/avx512f-floor-vec-2.c: New test. * gcc.target/i386/avx512f-floorf-sfix-vec-1.c: New test. * gcc.target/i386/avx512f-floorf-sfix-vec-2.c: New test. * gcc.target/i386/avx512f-floorf-vec-1.c: New test. * gcc.target/i386/avx512f-floorf-vec-2.c: New test. * gcc.target/i386/avx512f-rint-sfix-vec-1.c: New test. * gcc.target/i386/avx512f-rint-sfix-vec-2.c: New test. * gcc.target/i386/avx512f-rintf-sfix-vec-1.c: New test. * gcc.target/i386/avx512f-rintf-sfix-vec-2.c: New test. * gcc.target/i386/avx512f-round-sfix-vec-1.c: New test. * gcc.target/i386/avx512f-round-sfix-vec-2.c: New test. * gcc.target/i386/avx512f-roundf-sfix-vec-1.c: New test. * gcc.target/i386/avx512f-roundf-sfix-vec-2.c: New test. * gcc.target/i386/avx512f-trunc-vec-1.c: New test. * gcc.target/i386/avx512f-trunc-vec-2.c: New test. * gcc.target/i386/avx512f-truncf-vec-1.c: New test. * gcc.target/i386/avx512f-truncf-vec-2.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236709 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 PR c/71266Marek Polacek
* c-decl.c (store_parm_decls_oldstyle): Skip non-PARM_DECLs. * gcc.dg/noncompile/old-style-parm-3.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236708 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 PR c/71265Marek Polacek
* c-decl.c (c_make_fname_decl): Don't check seen_error. * gcc.dg/noncompile/pr71265.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236707 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 * ru.po: Update.Joseph Myers
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236705 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 * config/msp430/msp430.c (msp430_attr): Produce an error if aNick Clifton
static interrupt handler is detected. * config/msp430/msp430.h (LIB_SPEC): Do not use msp430.ld as the default linker script. * config/msp430/msp430.md (movpsihi2_lo): New pattern for loading the low part of a symbolic pointer. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236704 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25 libgcc/Nathan Sidwell
* config/nvptx/crt0.s: Delete. * config/nvptx/crt0.c: New. * t-nvptx: Update. gcc/testsuite/ * gcc.c-torture/execute/921110-1.c: Fix abort decl. add missing 2016-05-20 Nathan Sidwell <nathan@acm.org> entry git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236702 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-252016-05-25 Richard Biener <rguenther@suse.de>Richard Biener
PR tree-optimization/71261 * tree-if-conv.c (ifcvt_split_def_stmt): Walk uses on the interesting stmt instead of immediate uses when looking for the use operand to replace. * c-c++-common/torture/pr71261.c: New testcase. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236701 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25Fix dump output typoMartin Liska
* ipa-inline.c (edge_badness): Use 'w/' instead of 'w'. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236700 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-252016-05-25 Richard Biener <rguenther@suse.de>Richard Biener
PR tree-optimization/71264 * tree-vect-stmts.c (vect_init_vector): Properly deal with vector type val. * gcc.dg/vect/pr71264.c: New testcase. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236699 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-252016-05-25 Paolo Carlini <paolo.carlini@oracle.com>Paolo Carlini
PR c++/55992 * g++.dg/cpp0x/alias-decl-53.C: New. * g++.dg/cpp0x/alias-decl-54.C: Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236698 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25Remove _GLIBCXX14_USE_CONSTEXPRJonathan Wakely
* include/bits/c++config (_GLIBCXX14_USE_CONSTEXPR): Remove it. * include/bits/hashtable_policy.h (_Power2_rehash_policy::_M_next_bkt): Remove const qualification on function. Replace _GLIBCXX14_USE_CONSTEXPR on automatic variables with const. (_Power2_rehash_policy::_M_need_rehash): Remove const qualification. (_Power2_rehash_policy::_M_next_bkt): Remove mutable specifier. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236697 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25Fix PR tree-optimization/71239.Martin Liska
* g++.dg/pr71239.C: New test. PR tree-optimization/71239 * tree.c (array_at_struct_end_p): Do not call operand_equal_p if DECL_SIZE is NULL. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236696 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-252016-05-25 Richard Biener <rguenther@suse.de>Richard Biener
* timevar.def (TV_TREE_LOOP_IFCVT): Add. * tree-if-conv.c (pass_data_if_conversion): Use it. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236695 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-252016-05-24 Paolo Carlini <paolo.carlini@oracle.com>Paolo Carlini
* g++.dg/cpp1y/lambda-generic-static1.C: Use target c++14. * g++.dg/cpp1y/lambda-generic-static2.C: Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236694 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-252016-05-25 Richard Biener <rguenther@suse.de>Richard Biener
* gcc/testsuite/gcc.dg/vect/pr58135.c: Rename to ... * gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c: ... this. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236693 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25* cgraph.c (cgraph_node::get_availability): Fix typo in comment.Bernd Edlinger
* symtab.c (symtab_node::binds_to_current_def_p): Likewise. * varpool.c (varpool_node::get_availability): Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236690 138bc75d-0d04-0410-961f-82ee72b054a4
2016-05-25Daily bump.GCC Administrator
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236689 138bc75d-0d04-0410-961f-82ee72b054a4