aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2017-02-09gimplify.c (gimplify_scan_omp_clauses): No special handling for OMP_CLAUSE_TILE.Chung-Lin Tang34-295/+1558
2017-02-09 Nathan Sidwell <nathan@codesourcery.com> Cesar Philippidis <cesar@codesourcery.com> Joseph Myers <joseph@codesourcery.com> Chung-Lin Tang <cltang@codesourcery.com> gcc/ * gimplify.c (gimplify_scan_omp_clauses): No special handling for OMP_CLAUSE_TILE. (gimplify_adjust_omp_clauses): Don't delete TILE. (gimplify_omp_for): Deal with TILE. * internal-fn.c (expand_GOACC_TILE): New function. * internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative. (GOACC_TILE): New. * omp-expand.c (struct oacc_collapse): Add tile and outer fields. (expand_oacc_collapse_init): Add LOC paramter. Initialize tile element fields. (expand_oacc_collapse_vars): Add INNER parm, adjust for tiling, avoid DIV for outermost collapse var. (expand_oacc_for): Insert tile element loop as needed. Adjust. Remove out of date comments, fix whitespace. * omp-general.c (omp_extract_for_data): Deal with tiling. * omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag, adjust OLF_DIM_BASE value. (struct omp_for_data): Add tiling field. * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE. (lower_oacc_head_mark): Add OLF_TILE as appropriate. Ensure 2 levels for auto loops. Remove default auto determining, moved to oacc_loop_fixed_partitions. * omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call stmts, add e_mask field. (oacc_dim_call): New function, abstracted out from oacc_thread_numbers. (oacc_thread_numbers): Use oacc_dim_call. (oacc_xform_tile): New. (new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector. (finish_oacc_loop): Adjust for ifns vector. (oacc_loop_discover_walk): Append loop abstraction sites to list, add case for GOACC_TILE fns. (oacc_loop_xform_loop): Delete. (oacc_loop_process): Iterate over call list directly, and add handling for GOACC_TILE fns. (oacc_loop_fixed_partitions): Determine default auto, deal with TILE, dump partitioning. (oacc_loop_auto_partitions): Add outer_assign parm. Assign all but vector partitioning to outer loops. Assign 2 partitions to loops when available. Add TILE handling. (oacc_loop_partition): Adjust oacc_loop_auto_partitions call. (execite_oacc_device_lower): Process GOACC_TILE fns, ignore unknown specs. * tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE. * tree.c (omp_clause_num_ops): Adjust TILE ops. * tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New. gcc/c/ * c-parser.c (c_parser_omp_clause_collapse): Disallow tile. (c_parser_oacc_clause_tile): Disallow collapse. Fix parsing and semantic checking. * c-parser.c (c_parser_omp_for_loop): Accept tiling constructs. gcc/cp/ * parser.c (cp_parser_oacc_clause_tile): Disallow collapse. Fix parsing. Parse constant expression. Remove semantic checking. (cp_parser_omp_clause_collapse): Disallow tile. (cp_parser_omp_for_loop): Deal with tile clause. Don't emit a parse error about missing for after already emitting one. Use more conventional for idiom for unbounded loop. * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_TILE. * semantics.c (finish_omp_clauses): Correct TILE semantic check. (finish_omp_for): Deal with tile clause. gcc/fortran/ * openmp.c (resolve_omp_clauses): Error on directives containing both tile and collapse clauses. (resolve_oacc_loop_blocks): Represent '*' tile arguments as zero. * trans-openmp.c (gfc_trans_omp_do): Lower tiled loops like collapsed loops. gcc/testsuite/ * c-c++-common/goacc/combined-directives.c: Remove xfail. * c-c++-common/goacc/loop-auto-1.c: Adjust and add additional case. * c-c++-common/goacc/loop-auto-2.c: New. * c-c++-common/goacc/tile.c: Include stdbool, fix expected errors. * c-c++-common/goacc/tile-2.c: New. * g++.dg/goacc/template.C: Test tile subst. Adjust erroneous uses. * g++.dg/goacc/tile-1.C: New, check tile subst. * gcc.dg/goacc/loop-processing-1.c: Adjust dg-final pattern. * gfortran.dg/goacc/combined-directives.f90: Remove xfail. * gfortran.dg/goacc/tile-1.f90: New test. * gfortran.dg/goacc/tile-2.f90: New test. * gfortran.dg/goacc/tile-lowering.f95: New test. libgomp/ * testsuite/libgomp.oacc-c-c++-common/tile-1.c: New. * testsuite/libgomp.oacc-c-c++-common/loop-auto-1.c: Adjust and add additional case. * testsuite/libgomp.oacc-c-c++-common/vprop.c: XFAIL under "openacc_nvidia_accel_selected". * libgomp.oacc-fortran/nested-function-1.f90 (test2): Add num_workers(8) clause. From-SVN: r245300
2017-02-09* comperr.adb: Update FSF bug reporting URL.Gerald Pfeifer2-1/+5
From-SVN: r245297
2017-02-09configure.ac (ACX_BUGURL): Update.Gerald Pfeifer3-2/+7
* configure.ac (ACX_BUGURL): Update. * configure: Regenerate. From-SVN: r245296
2017-02-09re PR tree-optimization/69823 (internal compiler error: in ↵Richard Biener4-35/+44
create_pw_aff_from_tree, at graphite-sese-to-poly.c:445) 2017-02-09 Richard Biener <rguenther@suse.de> PR tree-optimization/69823 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): Properly enumerate all BBs in the region. Use auto_vec/auto_bitmap. * gcc.dg/graphite/pr69823.c: New testcase. From-SVN: r245295
2017-02-09arc/gcc: Better creation of __NPS400__ defineAndrew Burgess3-2/+14
The __NPS400__ define is currently created in CPP_SPEC unlike the other target defines, which are created in arc-c.def. Further, the current __NPS400__ define is (currently) only created when -mcpu=nps400 is passed, which is fine, except that if GCC is configured using --with-cpu=nps400 then the -mcpu option is not required and the __NPS400__ define will not be created. This commit moves the __NPS400__ define into arc-c.def inline with all of the other target defines, and removes the code in CPP_SPEC that used to create the define. In order to support the creation of the define in arc-c.def, a new TARGET_NPS400 macro is created in arc.h. gcc/ChangeLog: * config/arc/arc-c.def: Add __NPS400__ definition. * config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here. (TARGET_NPS400): Define. From-SVN: r245294
2017-02-09gcc/arc: Make arc_selected_cpu globalAndrew Burgess5-53/+74
Currently we only make the base_architecture globally available, this means we can tell if we have selected arc700/archs/etc but it's not possible to tell if the user has selected a specific cpu variant, for example nps400. One problem this causes is, for example, in arc-c.def, if we want to add an __NPS400__ define then we need a flag we can check to determine if this is the right thing to do. In this commit the arc_selected_cpu variable (previously local within arc.c) has been made global. Two other variables arc_base_cpu and arc_selected_arch have been deleted, all of this information can be found within (or through) arc_selected_cpu. All uses of arc_base_cpu and arc_selected_arch have been updated. This commit does not introduce any new defines (like __NPS400__), this is just a restructuring commit. The declaration of arc_selected_cpu has moved into arc-arch.h, in contrast to the declaration of arc_base_cpu which was previously in arc.h. This avoids a compilation issue when building libgcc, as the structure and enums declared in arc-arch.h are not included for libgcc then declaring an arc_selected_cpu (a struct type) in arc.h would result in an unknown struct error. We got away with this for arc_base_cpu as that was an enum type. The declaration of arc_selected_cpu in arc.h could have been wrapped in a '#ifndef IN_LIBGCC2 ... #endif', but it felt neater to simply move the declaration into arc-arch.h. gcc/ChangeLog: * config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in file. (arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t pointer, arch_info. (arc_cpu_types): Fill the arch_info field with a pointer into the arc_arch_types table. (arc_selected_cpu): Declare. * config/arc/arc.c (arc_selected_cpu): Make global. (arc_selected_arch): Delete. (arc_base_cpu): Delete. (arc_override_options): Remove references to deleted variables, update access to arch information. (ARC_OPT): Update access to arch information. (ARC_OPTX): Likewise. * config/arc/arc.h (arc_base_cpu): Remove declaration. (TARGET_ARC600): Update access to arch information. (TARGET_ARC601): Likewise. (TARGET_ARC700): Likewise. (TARGET_EM): Likewise. (TARGET_HS): Likewise. * config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch information. From-SVN: r245293
2017-02-09Daily bump.GCC Administrator1-1/+1
From-SVN: r245291
2017-02-08re PR target/78604 (test case gcc.target/powerpc/p8vector-vectorize-1.c ↵Pat Haugen4-1/+141
fails starting with r242750) PR target/78604 * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert condition/operands for integer GE/LE/GEU/LEU operations. * gcc.target/powerpc/pr78604.c: New. From-SVN: r245285
2017-02-08re PR testsuite/68972 (g++.dg/cpp1y/vla-initlist1.C test case fails on ↵Kelvin Nilsen2-0/+7
powerpc64le) gcc/testsuite/ChangeLog: 2017-02-08 Kelvin Nilsen <kelvin@gcc.gnu.org> PR target/68972 * g++.dg/cpp1y/vla-initlist1.C: Add dg-skip-if directive to disable this test on power architecture. From-SVN: r245280
2017-02-08rs6000: Fix spelling of AltiVec in rs6000.opt (PR79397)Segher Boessenkool2-2/+8
It was spelled Altivec in two user-facing messages in rs6000.opt; let's be consistent. PR translation/79397 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling of AltiVec. From-SVN: r245276
2017-02-08[PR 79375] Avoid passing NULL by referenceMartin Jambor2-9/+20
2017-02-08 Martin Jambor <mjambor@suse.cz> PR ipa/79375 * ipa-prop.c (ipa_alloc_node_params): Make static, return bool whether allocation happened. (ipa_initialize_node_params): Do not call ipa_alloc_node_params if nothing was allocated. From-SVN: r245275
2017-02-08re PR tree-optimization/71824 (ICE when compiling libiberty with Graphite ↵Richard Biener2-0/+25
loop optimizations) 2017-02-08 Richard Biener <rguenther@suse.de> PR tree-optimization/71824 PR tree-optimization/79409 * gcc.dg/graphite/pr71824-3.c: New testcase. From-SVN: r245274
2017-02-08re PR tree-optimization/79408 (Missed VRP optimization of integer modulo)Jakub Jelinek4-10/+71
PR tree-optimization/79408 * tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not constant, but SSA_NAME with a known integer range, use the minimum of that range instead of op1 to determine if modulo can be replaced with its first operand. * gcc.dg/tree-ssa/pr79408.c: New test. From-SVN: r245273
2017-02-08[riscv] Fix build due to INT16_MAX issueKyrylo Tkachov2-1/+7
* config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX. From-SVN: r245272
2017-02-08re PR tree-optimization/71824 (ICE when compiling libiberty with Graphite ↵Richard Biener4-3/+58
loop optimizations) 2017-02-08 Richard Biener <rguenther@suse.de> PR tree-optimization/71824 * graphite-scop-detection.c (scop_detection::build_scop_breadth): Check all loops contained in the merged region. * gcc.dg/graphite/pr71824-2.c: New testcase. From-SVN: r245270
2017-02-08aarch64.md (popcount<mode>2): New pattern.Andrew Pinski4-0/+64
2016-02-07 Andrew Pinski <apinski@cavium.com> gcc * config/aarch64/aarch64.md (popcount<mode>2): New pattern. gcc/testsuite * gcc.target/aarch64/popcount.c : New Testcase. From-SVN: r245267
2017-02-07aarch64-cores.def (thunderx): Disable LSE.Andrew Pinski2-5/+12
2017-02-07 Andrew Pinski <apinski@cavium.com> * config/aarch64/aarch64-cores.def (thunderx): Disable LSE. (thunderxt88): Likewise. (thunderxt81): Disable LSE and change v8.1 to v8. (thunderxt83): Likewise. From-SVN: r245266
2017-02-08Daily bump.GCC Administrator1-1/+1
From-SVN: r245264
2017-02-07re PR middle-end/79399 (GCC fails to compile big source at -O0)Jakub Jelinek3-2/+10
PR middle-end/79399 * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size type from int to size_t. * ira-costs.c (struct_costs_size): Change type from int to size_t. Co-Authored-By: Richard Biener <rguenther@suse.de> From-SVN: r245256
2017-02-07trans-types.c (gfc_get_int_kind_from_width_isofortranen): Choose REAL type ↵Steven G. Kargl2-7/+28
with the widest precision if... 2017-02-04 Steven G. Kargl <kargl@gcc.gnu.org> * trans-types.c (gfc_get_int_kind_from_width_isofortranen): Choose REAL type with the widest precision if two (or more) have the same storage size. From-SVN: r245255
2017-02-07re PR rtl-optimization/79386 (ICE: segmentation fault in cprop w/ -O2 on ↵Jakub Jelinek4-1/+62
32-bit BE powerpc) PR rtl-optimization/79386 * cprop.c (bypass_conditional_jumps): Initialize bypass_last_basic_block already before splitting bbs after unconditional traps... (bypass_conditional_jumps): ... rather than here. * gcc.c-torture/compile/pr79386.c: New test. From-SVN: r245251
2017-02-07method.c (synthesized_method_base_walk): New.Nathan Sidwell2-112/+105
* method.c (synthesized_method_base_walk): New. Broken out of ... (synthesized_method_walk): ... here. Call it. Cleanup initializations. From-SVN: r245250
2017-02-07Only xfail g++.dg/tls/thread_local-order2.C on SolarisDominik Vogt2-1/+8
2017-02-07 Dominik Vogt <vogt@linux.vnet.ibm.com> Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * g++.dg/tls/thread_local-order2.C: Only xfail execution on *-*-solaris*. Co-Authored-By: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> From-SVN: r245249
2017-02-07re PR target/79299 (Operand size mismatch for `vpgatherqd' w/ -O3 ↵Jakub Jelinek5-8/+418
-masm=intel -mavx512bw) PR target/79299 * config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs. (*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2, *avx512f_gatherdi<mode>, *avx512f_gatherdi<mode>_2): Use them, fix -masm=intel patterns. * gcc.target/i386/avx512vl-pr79299-1.c: New test. * gcc.target/i386/avx512vl-pr79299-2.c: New test. From-SVN: r245248
2017-02-07re PR tree-optimization/79256 (FAIL: gcc.dg/vect/pr25413a.c execution test)Richard Biener21-57/+97
2017-02-07 Richard Biener <rguenther@suse.de> PR tree-optimization/79256 PR middle-end/79278 * builtins.c (get_object_alignment_2): Use min_align_of_type to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN. * doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional type parameter. * doc/tm.texi: Regenerate. * stor-layout.c (layout_decl): Adjust. (update_alignment_for_field): Likewise. (place_field): Likewise. (min_align_of_type): Likewise. * config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust. * config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise. * config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise. * config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise. * config/frv/frv.c (frv_adjust_field_align): Likewise. * config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise. * config/i386/i386.c (x86_field_alignment): Likewise. * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise. * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise. * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise. * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise. * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise. * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p): Likewise. go/ * go-backend.c (go_field_alignment): Adjust. libobjc/ * encoding.c (objc_layout_structure_next_member): Adjust ADJUST_FIELD_ALIGN usage. Revert 2017-01-30 Richard Biener <rguenther@suse.de> PR tree-optimization/79256 * targhooks.c (default_builtin_vector_alignment_reachable): Honor BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus alignment on TYPE. From-SVN: r245245
2017-02-07gimple-parser.c (c_parser_gimple_expr_list): Simplify.Richard Biener5-56/+65
2017-02-07 Richard Biener <rguenther@suse.de> c/ * gimple-parser.c (c_parser_gimple_expr_list): Simplify. (c_parser_gimple_postfix_expression_after_primary): Do not use c_build_function_call_vec to avoid folding and promotion. Simplify. * gcc.dg/gimplefe-23.c: New testcase. * gcc.dg/gimplefe-24.c: Likewise. From-SVN: r245244
2017-02-07MIPS: Fix mode mismatch error between Loongson builtin arguments and insnToma Tabacu2-0/+24
operands. gcc/ * config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw builtins to SImode and emit a zero-extend, if necessary. From-SVN: r245243
2017-02-07[AArch64,testsuite] Fix epilogue scan after ifcombine update.Christophe Lyon9-9/+21
2017-02-07 Christophe Lyon <christophe.lyon@linaro.org> * gcc.target/aarch64/test_frame_1.c: Scan epilogue with scan-assembler instead of scan-assembler-times. * gcc.target/aarch64/test_frame_10.c: Likewise. * gcc.target/aarch64/test_frame_12.c: Likewise. * gcc.target/aarch64/test_frame_2.c: Likewise. * gcc.target/aarch64/test_frame_4.c: Likewise. * gcc.target/aarch64/test_frame_6.c: Likewise. * gcc.target/aarch64/test_frame_7.c: Likewise. * gcc.target/aarch64/test_frame_8.c: Likewise. From-SVN: r245242
2017-02-07Require ifunc support in gcc.target/i386/pr78419.cRainer Orth2-0/+5
* gcc.target/i386/pr78419.c: Require ifunc support. From-SVN: r245241
2017-02-06* gcc.dg/torture/stackalign/builtin-apply-2.c: Fix skip-if syntax.David Edelsohn2-1/+5
From-SVN: r245240
2017-02-07re PR c++/79360 (ICE with NSDMI and enum in union)Patrick Palka4-1/+25
Fix PR c++/79360 gcc/cp/ChangeLog: PR c++/79360 * typeck2.c (process_init_constructor_union): Consider only FIELD_DECLs when looking for an NSDMI. gcc/testsuite/ChangeLog: PR c++/79360 * g++.dg/cpp1y/nsdmi-union2.C: New test. From-SVN: r245239
2017-02-07Daily bump.GCC Administrator1-1/+1
From-SVN: r245237
2017-02-06* de.po, fr.po, sv.po: Update.Joseph Myers4-2386/+1304
From-SVN: r245233
2017-02-06Alphebetize RISC-V Options sectionPalmer Dabbelt2-79/+83
2017-02-06 Palmer Dabbelt <palmer@dabbelt.com> * docs/invoke.texi (RISC-V Options): Alphabetize. From-SVN: r245231
2017-02-06Use two spaces to separate options in the RISC-V docsPalmer Dabbelt2-6/+11
gcc/ChangeLog: 2017-02-06 Palmer Dabbelt <palmer@dabbelt.com> * doc/invoke.texi (RISC-V Options): Use two spaces to separate options. From-SVN: r245230
2017-02-06RISC-V Port: gcc/testsuiteKito Cheng15-7/+37
gcc/testsuite/ChangeLog: 2017-02-06 Kito Cheng <kito.cheng@gmail.com> * lib/target-supports.exp: Define the RISC-V target. * g++.dg/cpp0x/constexpr-rom.C: Skip on RISC-V * gcc.dg/builtin-apply2.c: Likewise. * gcc.dg/ifcvt-4.c: Likewise. * gcc.dg/loop-8.c: Likewise. * gcc.dg/sibcall-10.c: Likewise. * gcc.dg/sibcall-9.c: Likewise. * gcc.dg/torture/stackalign/builtin-apply-2.c: Likewise. * gcc.dg/tree-ssa/20040204-1.c: Likewise. * gcc.dg/tree-ssa/ssa-dom-cse-2.c: Likewise. * gcc.dg/tree-ssa/ssa-fre-3.c: Likewise. * gcc.c-torture/execute/20101011-1.c: Define DO_TEST on RISC-V. * gcc.dg/20020312-2.c: Don't define PIC_REG on RISC-V. * gcc.dg/stack-usage-1.c: Define SIZE on RISC-V. From-SVN: r245228
2017-02-06RISC-V Port: Regenerate gcc/configurePalmer Dabbelt2-2/+14
From-SVN: r245225
2017-02-06RISC-V Port: gccPalmer Dabbelt31-2/+9091
gcc/ChangeLog: 2017-02-06 Palmer Dabbelt <palmer@dabbelt.com> * config/riscv/riscv.c: New file. * gcc/common/config/riscv/riscv-common.c: Likewise. * config.gcc: Likewise. * config/riscv/constraints.md: Likewise. * config/riscv/elf.h: Likewise. * config/riscv/generic.md: Likewise. * config/riscv/linux.h: Likewise. * config/riscv/multilib-generator: Likewise. * config/riscv/peephole.md: Likewise. * config/riscv/pic.md: Likewise. * config/riscv/predicates.md: Likewise. * config/riscv/riscv-builtins.c: Likewise. * config/riscv/riscv-c.c: Likewise. * config/riscv/riscv-ftypes.def: Likewise. * config/riscv/riscv-modes.def: Likewise. * config/riscv/riscv-opts.h: Likewise. * config/riscv/riscv-protos.h: Likewise. * config/riscv/riscv.h: Likewise. * config/riscv/riscv.md: Likewise. * config/riscv/riscv.opt: Likewise. * config/riscv/sync.md: Likewise. * config/riscv/t-elf-multilib: Likewise. * config/riscv/t-linux: Likewise. * config/riscv/t-linux-multilib: Likewise. * config/riscv/t-riscv: Likewise. * configure.ac: Likewise. * doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew Waterman as RISC-V maintainers. * doc/install.texi: Add RISC-V entries. * doc/invoke.texi: Add RISC-V options section. * doc/md.texi: Add RISC-V constraints section. From-SVN: r245224
2017-02-06PR c++/71193 - incomplete types in templatesJason Merrill3-16/+57
* parser.c (cp_parser_postfix_dot_deref_expression): In a template handle incomplete type by pedwarning and then treating as dependent. From-SVN: r245223
2017-02-06re PR target/66144 (vector element operator produces very bad code)Michael Meissner8-16/+156
[gcc] 2017-02-06 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/66144 * config/rs6000/vector.md (vcond<mode><mode>): Allow the true and false values to be constant vectors with all 0 or all 1 bits set. (vcondu<mode><mode>): Likewise. * config/rs6000/predicates.md (vector_int_reg_or_same_bit): New predicate. (fpmask_comparison_operator): Update comment. (vecint_comparison_operator): New predicate. * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize vector conditionals when the true and false values are constant vectors with all 0 bits or all 1 bits set. [gcc/testsuite] 2017-02-06 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/66144 * gcc.target/powerpc/pr66144-1.c: New test. * gcc.target/powerpc/pr66144-2.c: Likewise. * gcc.target/powerpc/pr66144-3.c: Likewise. From-SVN: r245222
2017-02-06PR tree-optimization/ 79376 - wrong lower bound with %s and non-constantMartin Sebor5-2/+333
strings in -Wformat-overflow gcc/ChangeLog: * gimple-fold.c (get_range_strlen): Set the minimum length to zero. From-SVN: r245221
2017-02-06re PR c++/79379 (ICE with #pragma GCC ivdep)Jakub Jelinek4-0/+38
PR c++/79379 * constexpr.c (cxx_eval_constant_expression): Handle ANNOTATE_EXPR. (potential_constant_expression_1): Likewise. * g++.dg/cpp1y/constexpr-79379.C: New test. From-SVN: r245220
2017-02-06re PR c++/79377 (ICE with increment operator in -fpermissive mode)Jakub Jelinek4-2/+47
PR c++/79377 * tree.c (build_min_non_dep_op_overload): For POST{INC,DEC}REMENT_EXPR allow one fewer than expected arguments if flag_permissive. * g++.dg/lookup/pr79377.C: New test. From-SVN: r245219
2017-02-06re PR c++/79372 (ICE on C++ code with illegal decomposition declaration on ↵Jakub Jelinek5-1/+34
x86_64-linux-gnu: in tsubst_decomp_names, at cp/pt.c:15599) PR c++/79372 * decl.c (cp_finish_decomp): On error set decl type to error_mark_node. * pt.c (tsubst_expr): Don't call tsubst_decomp_names on decompositions with error_mark_node type. * g++.dg/cpp1z/decomp25.C: New test. From-SVN: r245218
2017-02-06sse.md (vector modes -> vec_extract* splitter): Use explicit subreg RTX with ↵Uros Bizjak2-14/+13
operand 1. * config/i386/sse.md (vector modes -> vec_extract* splitter): Use explicit subreg RTX with operand 1. Use VECTOR_MODE_P predicate to simplify split condition. From-SVN: r245217
2017-02-06omp-expand.c (oxpand_omp_atomic_fetch_op, [...]): Return false if ↵Jakub Jelinek2-2/+9
can_atomic_load_p is false. * omp-expand.c (oxpand_omp_atomic_fetch_op, expand_omp_atomic_pipeline): Return false if can_atomic_load_p is false. From-SVN: r245216
2017-02-06sched: Do not move expensive insns speculatively (PR68664)Segher Boessenkool6-6/+62
Scheduling should never move very expensive instructions to places they are executed more frequently. This patch fixes that, reducing the execution time of c-ray by over 40% (I tested on a BE Power7 system). This introduces a new target hook sched.can_speculate_insn which returns whether the scheduler is allowed to speculate a given instruction. The rs6000 implementation disallows all divide and square root instructions. PR rtl-optimization/68664 * target.def (can_speculate_insn): New hook. * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook. * doc/tm.texi: Regenerate. * sched-rgn.c (can_schedule_ready_p): Use the new hook. * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro. (rs6000_sched_can_speculate_insn): New function. From-SVN: r245215
2017-02-06re PR tree-optimization/79284 (ICE on valid code at -O3 on x86_64-linux-gnu: ↵Jakub Jelinek8-36/+81
verify_gimple failed) PR tree-optimization/79284 * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define. * tree-vect-stmts.c (vect_get_vec_def_for_operand, vectorizable_mask_load_store, vectorizable_operation, vect_is_simple_cond, get_same_sized_vectype): Use it instead of comparing TREE_CODE of a type against BOOLEAN_TYPE. * tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1, vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise. * tree-vect-slp.c (vect_get_constant_vectors): Likewise. * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise. Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after is_gimple_assign (stmt). Replace another such test with is_gimple_assign (stmt). testsuite/ * gcc.c-torture/compile/pr79284.c: New test. From-SVN: r245214
2017-02-06re PR c++/70448 (ICE on invalid code on x86_64-linux-gnu: unexpected ↵Paolo Carlini2-0/+11
expression ‘f’ of kind overload) 2017-02-06 Paolo Carlini <paolo.carlini@oracle.com> PR c++/70448 * g++.dg/cpp0x/pr70448.C: New. From-SVN: r245213
2017-02-06PR 78348: Limit amount of unrolling in test.Dominik Vogt2-1/+7
gcc/testsuite/ChangeLog: 2017-02-06 Dominik Vogt <vogt@linux.vnet.ibm.com> PR 78348 * gcc.dg/tree-ssa/ldist-24.c: Add "--param max-completely-peel-times=8" to dg-options. From-SVN: r245210