aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2017-09-22Let the target choose a vectorisation alignmentRichard Sandiford13-105/+242
The vectoriser aligned vectors to TYPE_ALIGN unconditionally, although there was also a hard-coded assumption that this was equal to the type size. This was inconvenient for SVE for two reasons: - When compiling for a specific power-of-2 SVE vector length, we might want to align to a full vector. However, the TYPE_ALIGN is governed by the ABI alignment, which is 128 bits regardless of size. - For vector-length-agnostic code it doesn't usually make sense to align, since the runtime vector length might not be a power of two. Even for power of two sizes, there's no guarantee that aligning to the previous 16 bytes will be an improveent. This patch therefore adds a target hook to control the preferred vectoriser (as opposed to ABI) alignment. 2017-09-22 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * target.def (preferred_vector_alignment): New hook. * doc/tm.texi.in (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New hook. * doc/tm.texi: Regenerate. * targhooks.h (default_preferred_vector_alignment): Declare. * targhooks.c (default_preferred_vector_alignment): New function. * tree-vectorizer.h (dataref_aux): Add a target_alignment field. Expand commentary. (DR_TARGET_ALIGNMENT): New macro. (aligned_access_p): Update commentary. (vect_known_alignment_in_bytes): New function. * tree-vect-data-refs.c (vect_calculate_required_alignment): New function. (vect_compute_data_ref_alignment): Set DR_TARGET_ALIGNMENT. Calculate the misalignment based on the target alignment rather than the vector size. (vect_update_misalignment_for_peel): Use DR_TARGET_ALIGMENT rather than TYPE_ALIGN / BITS_PER_UNIT to update the misalignment. (vect_enhance_data_refs_alignment): Mask the byte misalignment with the target alignment, rather than masking the element misalignment with the number of elements in a vector. Also use the target alignment when calculating the maximum number of peels. (vect_find_same_alignment_drs): Use vect_calculate_required_alignment instead of TYPE_ALIGN_UNIT. (vect_duplicate_ssa_name_ptr_info): Remove stmt_info parameter. Measure DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT. (vect_create_addr_base_for_vector_ref): Update call accordingly. (vect_create_data_ref_ptr): Likewise. (vect_setup_realignment): Realign by ANDing with -DR_TARGET_MISALIGNMENT. * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Calculate the number of peels based on DR_TARGET_ALIGNMENT. * tree-vect-stmts.c (get_group_load_store_type): Compare the gap with the guaranteed alignment boundary when deciding whether overrun is OK. (vectorizable_mask_load_store): Interpret DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT instead of TYPE_ALIGN_UNIT. (ensure_base_align): Remove stmt_info parameter. Get the target base alignment from DR_TARGET_ALIGNMENT. (vectorizable_store): Update call accordingly. Interpret DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT instead of TYPE_ALIGN_UNIT. (vectorizable_load): Likewise. gcc/testsuite/ * gcc.dg/vect/vect-outer-3a.c: Adjust dump scan for new wording of alignment message. * gcc.dg/vect/vect-outer-3a-big-array.c: Likewise. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253101
2017-09-22Fix testsuite fallout from r252976.Martin Sebor2-1/+6
gcc/testsuite/ChangeLog: PR c/81854 * gcc.target/i386/pr80732.c: Correct a type error. From-SVN: r253100
2017-09-22Add a vect_get_scalar_dr_size helper functionRichard Sandiford3-7/+25
This patch adds a helper function for getting the number of bytes accessed by an unvectorised data reference, which helps when general modes have a variable size. 2017-09-22 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree-vectorizer.h (vect_get_scalar_dr_size): New function. * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use it. (vect_enhance_data_refs_alignment): Likewise. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253099
2017-09-22[arm] Improve error checking in parsecpu.awkRichard Earnshaw2-1/+36
This patch adds a bit more error checking to parsecpu.awk to ensure that statements are not missing arguments or have excess arguments beyond those permitted. It also slightly improves the handling of errors so that we terminate properly if parsing fails and be as helpful as we can while in the parsing phase. 2017-09-22 Richard Earnshaw <richard.earnshaw@arm.com> * config/arm/parsecpu.awk (fatal): Note that we've encountered an error. Only quit immediately if parsing is complete. (BEGIN): Initialize fatal_err and parse_done. (begin fpu, end fpu): Check number of arguments. (begin arch, end arch): Likewise. (begin cpu, end cpu): Likewise. (cname, tune for, tune flags, architecture, fpu, option): Likewise. (optalias): Likewise. From-SVN: r253098
2017-09-22[arm] auto-generate arm-isa.h from CPU descriptionsRichard Earnshaw9-287/+419
This patch autogenerates arm-isa.h from new entries in arm-cpus.in. This has the primary advantage that it makes the description file more self-contained, but it also solves the 'array dimensioning' problem that Tamar recently encountered. It adds two new constructs to arm-cpus.in: features and fgroups. Fgroups are simply a way of naming a group of feature bits so that they can be referenced together. We follow the convention that feature bits are all lower case, while fgroups are (predominantly) upper case. This is helpful as in some contexts they share the same namespace. Most of the minor changes in this patch are related to adopting this new naming convention. 2017-09-22 Richard Earnshaw <richard.earnshaw@arm.com> * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file. * config/arm/arm-isa.h: Delete. Move definitions to ... * arm-cpus.in: ... here. Use new feature and fgroup values. * config/arm/arm.c (arm_option_override): Use lower case for feature bit names. * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise. (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise. * config/arm/parsecpu.awk (END): Add new command 'isa'. (isa_pfx): Delete. (print_isa_bits_for): New function. (gen_isa): New function. (gen_comm_data): Use print_isa_bits_for. (define feature): New keyword. (define fgroup): New keyword. * config/arm/t-arm (TM_H): Remove. (GTM_H): Add arm-isa.h. (arm-isa.h): Add rule to generate file. * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower case for feature bit names. From-SVN: r253097
2017-09-22C++: underline parameters in mismatching function callsDavid Malcolm6-14/+125
gcc/cp/ChangeLog: * call.c (get_fndecl_argument_location): New function. (convert_like_real): Use it when complaining about argument type mismatches. * cp-tree.h (struct cp_parameter_declarator): Add "loc" field. * parser.c (make_parameter_declarator): Add "loc" param and use it to initialize the new field. (cp_parser_translation_unit): Add UNKNOWN_LOCATION for "loc" of the "no_parameters" parameter. (cp_parser_parameter_declaration_list): Set the location of the result of grokdeclarator to be the parameter's loc, assuming no errors. (cp_parser_parameter_declaration): Generate a location for the parameter and pass to make_parameter_declarator. gcc/testsuite/ChangeLog: * g++.dg/diagnostic/param-type-mismatch.C: Update expected results to reflect highlighting of parameters; add test coverage for callback parameters. From-SVN: r253096
2017-09-22graphite-isl-ast-to-gimple.c (graphite_verify): Inline into single caller.Richard Biener6-112/+101
2017-09-22 Richard Biener <rguenther@suse.de> * graphite-isl-ast-to-gimple.c (graphite_verify): Inline into single caller. (graphite_regenerate_ast_isl): Do not reset SCEV. Move debug print of no dependency loops ... * graphite.c (graphite_transform_loops): ... here. (canonicalize_loop_closed_ssa_form): Work from inner to outer loops. (same_close_phi_node, remove_duplicate_close_phi, make_close_phi_nodes_unique, defined_in_loop_p): Fold into ... (canonicalize_loop_closed_ssa): ... here and simplify. * graphite-optimize-isl.c: Include tree-vectorizer.h. (optimize_isl): Use dump_printf_loc to tell when we stopped optimizing because of an ISL timeout. * gcc.dg/graphite/scop-24.c: New testcase. From-SVN: r253094
2017-09-22re PR tree-optimization/82291 (wrong code at -O3 on x86_64-linux-gnu)Richard Biener4-90/+148
2017-09-22 Richard Biener <rguenther@suse.de> PR tree-optimization/82291 * tree-if-conv.c (predicate_mem_writes): Make sure to remove writes in blocks predicated with false. * gcc.dg/torture/pr82291.c: New testcase. From-SVN: r253093
2017-09-22sese.c: Include cfganal.h.Richard Biener2-101/+35
2017-09-22 Richard Biener <rguenther@suse.de> * sese.c: Include cfganal.h. (if_region_set_false_region): Remove. (create_if_region_on_edge): Likewise. (move_sese_in_condition): Re-implement without destroying dominators. From-SVN: r253092
2017-09-22re PR fortran/52832 ([F03] ASSOCIATE construct with proc-pointer selector is ↵Paul Thomas1-39/+0
rejected) 2017-09-22 Paul Thomas <pault@gcc.gnu.org> PR fortran/52832 * gfortran.dg/associate_31.f90 : Remove failing test. From-SVN: r253091
2017-09-22graphite-isl-ast-to-gimple.c (translate_pending_phi_nodes): Verify both BBs ↵Richard Biener6-231/+222
contain loop PHI nodes before dispatching to copy_loop_phi_args. 2017-09-21 Richard Biener <rguenther@suse.de> * graphite-isl-ast-to-gimple.c (translate_pending_phi_nodes): Verify both BBs contain loop PHI nodes before dispatching to copy_loop_phi_args. (graphite_regenerate_ast_isl): Do not recompute dominators, do not verify three times. Restructure for clarity. * graphite-scop-detection.c (same_close_phi_node, remove_duplicate_close_phi, make_close_phi_nodes_unique, defined_in_loop_p, canonicalize_loop_closed_ssa, canonicalize_loop_closed_ssa_form): Simplify, remove excess checking and SSA rewrite, move to ... * graphite.c: ... here. Include ssa.h and tree-ssa-loop-manip.h. (graphite_initialize): Do not pass in ctx, do not reset the SCEV cache, compute only dominators. (graphite_transform_loops): Allocate ISL ctx after graphite_initialize. Call canonicalize_loop_closed_ssa_form. Maintain post-dominators only around build_scops. * sese.c (if_region_set_false_region): Make static. Free and recompute dominators. (move_sese_in_condition): Assert we don't get called with post-dominators computed. * sese.h (if_region_set_false_region): Remove. From-SVN: r253090
2017-09-22sse.md ("mov<mode>_internal"): Use <sseinsnmode> mode attribute for ↵Sergey Shalnov9-15/+104
TARGET_AVX512VL. /gcc * config/i386/sse.md ("mov<mode>_internal"): Use <sseinsnmode> mode attribute for TARGET_AVX512VL. * config/i386/i386.opt (mprefer-avx256): New option. * config/i386/i386.c (ix86_target_string): Add -mprefer-avx256 to flag_opts. (ix86_preferred_simd_mode): Return 256-bit AVX modes for TARGET_PREFER_AVX256. * doc/invoke.texi (x86 Options): Document -mprefer-avx256. /testsuite * gcc.target/i386/avx512f-constant-set.c: New test. * g++.dg/ext/pr57362.C: Test __attribute__((target("prefer-avx256"))). * gcc.target/i386/avx512f-prefer.c: New test. From-SVN: r253089
2017-09-22Daily bump.GCC Administrator1-1/+1
From-SVN: r253088
2017-09-21<commit missing files>Michael Meissner4-0/+61
2017-09-13 Michael Meissner <meissner@linux.vnet.ibm.com> * gcc.target/powerpc/float128-fma1.c: New test. * gcc.target/powerpc/float128-fma2.c: Likewise. * gcc.target/powerpc/float128-sqrt1.c: Likewise. * gcc.target/powerpc/float128-sqrt2.c: Likewise. From-SVN: r253083
2017-09-21i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix dump output if the ↵Jeff Law4-1/+24
only stack space is for pushed registers. * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix dump output if the only stack space is for pushed registers. * lib/target-supports.exp (check_effective_target_frame_pointer_for_non_leaf): Add case for x86 Solaris. From-SVN: r253082
2017-09-21Fix spu build after r253072Richard Sandiford2-1/+6
2017-09-21 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * config/spu/spu.c (spu_sched_adjust_cost): Update after renaming of insn_cost. From-SVN: r253080
2017-09-21re PR fortran/52832 ([F03] ASSOCIATE construct with proc-pointer selector is ↵Paul Thomas11-22/+306
rejected) 2017-09-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/52832 * match.c (gfc_match_associate): Before failing the association try again, allowing a proc pointer selector. PR fortran/80120 PR fortran/81903 PR fortran/82121 * primary.c (gfc_match_varspec): Introduce 'tgt_expr', which points to the associate selector, if any. Go through selector references, after resolution for variables, to catch any full or section array references. If a class associate name does not have the same declared type as the selector, resolve the selector and copy the declared type to the associate name. Before throwing a no implicit type error, resolve all allowed selector expressions, and copy the resulting typespec. PR fortran/67543 * resolve.c (resolve_assoc_var): Selector must cannot be the NULL expression and it must have a type. PR fortran/78152 * resolve.c (resolve_symbol): Allow associate names to be coarrays. 2017-09-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/78512 * gfortran.dg/associate_26.f90 : New test. PR fortran/80120 * gfortran.dg/associate_27.f90 : New test. PR fortran/81903 * gfortran.dg/associate_28.f90 : New test. PR fortran/82121 * gfortran.dg/associate_29.f90 : New test. PR fortran/67543 * gfortran.dg/associate_30.f90 : New test. PR fortran/52832 * gfortran.dg/associate_31.f90 : New test. From-SVN: r253077
2017-09-21PR c/81882 - attribute ifunc documentation uses invalid codeMartin Sebor2-4/+12
gcc/ChangeLog: PR c/81882 * doc/extend.texi (attribute ifunc): Avoid relying on ill-formed code (in C++) or code that triggers warnings. From-SVN: r253076
2017-09-21* stor-layout.c (bit_from_pos): Do not distribute the conversion.Eric Botcazou5-11/+44
From-SVN: r253074
2017-09-21re PR testsuite/78421 (vect-strided-a-u8-i2-gap.c fails on armeb)Tamar Christina2-1/+7
2017-09-21 Tamar Christina <tamar.christina@arm.com> PR testsuite/78421 * lib/target-supports.exp (check_effective_target_vect_hw_misalign): Invert arm check. From-SVN: r253073
2017-09-21Rename existing insn_cost to insn_sched_costSegher Boessenkool5-11/+17
haifa-sched exports an insn_cost function, but it is only used in a few places and specialised to scheduling. This patch renames it to insn_sched_cost. * haifa-sched.c: Rename insn_cost to insn_sched_cost. * sched-rgn.c: Ditto. * sel-sched-ir.c: Ditto. From-SVN: r253072
2017-09-21openmp.c (gfc_match_oacc_wait): Don't restrict wait directive arguments to ↵Cesar Philippidis4-2/+22
constant integers. gcc/fortran/ * openmp.c (gfc_match_oacc_wait): Don't restrict wait directive arguments to constant integers. gcc/testsuite/ * gfortran.dg/goacc/wait.f90: New test. From-SVN: r253071
2017-09-21toplev: read from /dev/urandom only when neededAlexander Monakov3-38/+28
* toplev.h (set_random_seed): Adjust return type. * toplev.c (init_local_tick): Move eager initialization of random_seed to get_random_seed. Adjust comment. (init_random_seed): Inline to get_random_seed, delete. (get_random_seed): Initialize random_seed lazily. (set_random_seed): Do not return previous value. (print_switch_value): Do not call get_random_seed. From-SVN: r253069
2017-09-21ipa: fix dumping with deleted multiversioning nodesEvgeny Kudryashov4-15/+27
2017-09-21 Evgeny Kudryashov <kudryashov@ispras.ru> * cgraph.c (delete_function_version): New, broken out from... (cgraph_node::delete_function_version): ...here. Rename to cgraph_node::delete_function_version_by_decl. Update all uses. (cgraph_node::remove): Call delete_function_version. From-SVN: r253066
2017-09-21re PR sanitizer/81715 (asan-stack=1 redzone allocation is too inflexible)Jakub Jelinek5-2/+105
PR sanitizer/81715 * tree-inline.c (expand_call_inline): Emit clobber stmts for VAR_DECLs to which addressable non-volatile parameters are mapped and for id->retvar after the return value assignment. Clear id->retval and id->retbnd after inlining. * g++.dg/tree-ssa/pr8781.C (noop): Change argument type from const predicate to const predicate & to avoid UB. * g++.dg/opt/pr81715.C: New test. From-SVN: r253065
2017-09-21re PR tree-optimization/82276 (-O2: ICE: SSA corruption during RTL pass: ↵Richard Biener4-9/+53
expand; at tree-ssa-coalesce.c:1010) 2017-09-21 Richard Biener <rguenther@suse.de> PR tree-optimization/82276 PR tree-optimization/82244 * tree-vrp.c (build_assert_expr_for): Set SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on has it set. (remove_range_assertions): Revert earlier change. * gcc.dg/torture/pr82276.c: New testcase. From-SVN: r253062
2017-09-21PR71951: Fix unwinding with -fomit-frame-pointerWilco Dijkstra2-0/+13
As described in PR71951, if libgcc is built with -fomit-frame-pointer, unwinding crashes, for example while doing a backtrace. The underlying reason is the Dwarf unwinder does not setup the frame pointer register in the initialization code. When later unwinding a function that uses the frame pointer, it tries to read FP using _Unwind_GetGR, and this crashes if has never restored FP. To unwind correctly the first frame must save and restore FP (it is unwound in a special way so that it uses SP instead of FP). This is done by adding -fno-omit-frame-pointer. gcc/ PR target/71951 * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. From-SVN: r253061
2017-09-21graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Restore valid IL ↵Richard Biener3-9/+36
after code generation errors. 2017-09-21 Richard Biener <rguenther@suse.de> * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Restore valid IL after code generation errors. * graphite.c (graphite_transform_loops): Diagnose code generation issues as MSG_MISSED_OPTIMIZATION and continue with processing SCOPs. From-SVN: r253060
2017-09-21Make more use of simplify_gen_binaryRichard Sandiford3-27/+14
This patch replaces various places that previously used: if (GET_CODE (y) == CONST_INT) ... plus_constant (..., x, [-]INTVAL (y)) ... else ... gen_rtx_PLUS/MINUS (..., x, y) ... with single calls to simplify_gen_binary. This allows them to handle polynomial integers as well as constants. 2017-09-21 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * calls.c (compute_argument_addresses): Use simplify_gen_binary rather than choosing between plus_constant and gen_rtx_<CODE>. * expr.c (emit_push_insn): Likewise. (expand_expr_real_2): Likewise. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253059
2017-09-21Add copy_rtx call to RTL loop unrollerRichard Sandiford2-1/+8
This is needed if the step is an unshared constant, like many (const ...)s are. Without this patch, libgfortran would fail to build for SVE. 2017-09-21 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * loop-unroll.c (split_iv): Call copy_rtx on the step. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253058
2017-09-21Fix unguarded uses of tree_to_uhwiRichard Sandiford2-3/+9
This patch uses tree_fits_uhwi_p to protect a previously unguarded use of tree_to_uhwi. Previously we would ICE for variable-sized types. 2017-09-20 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before calling tree_to_uhwi. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253057
2017-09-21Tighten tree-ssa-ccp.c:get_value_for_expr conditionRichard Sandiford2-1/+8
bit_value_unop and bit_value_binop require constant values to be INTEGER_CSTs: gcc_assert ((rval.lattice_val == CONSTANT && TREE_CODE (rval.value) == INTEGER_CST) || wi::sext (rval.mask, TYPE_PRECISION (TREE_TYPE (rhs))) == -1); However, when deciding whether to record a constant value, the for_bits_p handling in get_value_for_expr used a negative test for ADDR_EXPR: else if (is_gimple_min_invariant (expr) && (!for_bits_p || TREE_CODE (expr) != ADDR_EXPR)) This patch uses a positive test for INTEGER_CST instead. Existing tests showed the need for this once polynomial constants are added. 2017-09-21 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for INTEGER_CST rather than a negative test for ADDR_EXPR. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253056
2017-09-21TweakEric Botcazou1-2/+1
From-SVN: r253055
2017-09-21Add missing int_cst_rangeN checks to tree-vrp.cRichard Sandiford2-2/+11
The BIT_AND_EXPR handling in extract_range_from_binary_expr_1 was using value_range_constant_singleton without first checking whether the range was a constant. The earlier handling was correctly guarded: /* If either input range contains only non-negative values we can truncate the result range maximum to the respective maximum of the input range. */ if (int_cst_range0 && tree_int_cst_sgn (vr0.min) >= 0) wmax = wi::min (wmax, vr0.max, TYPE_SIGN (expr_type)); if (int_cst_range1 && tree_int_cst_sgn (vr1.min) >= 0) wmax = wi::min (wmax, vr1.max, TYPE_SIGN (expr_type)); so this patch uses the same guards again. Existing tests showed the need for this once polynomial constants are added. 2017-09-21 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree-vrp.c (extract_range_from_binary_expr_1): Check int_cst_rangeN before calling value_range_constant_singleton (&vrN). Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253054
2017-09-21re PR tree-optimization/71351 (ICE: Segmentation fault (graphite))Richard Biener5-87/+45
2017-09-21 Richard Biener <rguenther@suse.de> PR tree-optimization/71351 * graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple:: graphite_create_new_loop_guard): Remove, fold remaining parts into caller ... (translate_isl_ast_node_for): ... here and simplify. * gfortran.dg/graphite/pr71351.f90: New testcase. * gfortran.dg/graphite/interchange-3.f90: Adjust. From-SVN: r253052
2017-09-21re PR target/82260 ([x86] Unnecessary use of 8-bit registers with -Os. ↵Jakub Jelinek5-23/+106
slightly slower and larger code) PR target/82260 * config/i386/i386.md (*movqi_internal): Replace (=q,q) alternative with (=Q,Q), (=R,R) and (=r,r) alternatives, only enable the latter two for 64-bit, renumber alternatives, for -Os imov (=q,n) alternative always use QI mode, for -Os imov (=R,R) alternative always use SI mode, for imov (=Q,Q) or (=r,r) alternatives ignore -Os. * gcc.target/i386/pr82260-1.c: New test. * gcc.target/i386/pr82260-2.c: New test. From-SVN: r253050
2017-09-20s390.c (MIN_UNROLL_PROBES): Define.Andreas Krebbel5-28/+260
* config/s390/s390.c (MIN_UNROLL_PROBES): Define. (allocate_stack_space): New function, partially extracted from s390_emit_prologue. (s390_emit_prologue): Track offset to most recent stack probe. Code to allocate space moved into allocate_stack_space. Dump actions when no stack is allocated. (s390_prologue_plus_offset): New function. (s390_emit_stack_probe): Likewise. * gcc.dg/stack-check-5.c: Add argument for s390. * lib/target-supports.exp: (check_effective_target_supports_stack_clash_protection): Enable for s390/s390x targets. Co-Authored-By: Jeff Law <law@redhat.com> From-SVN: r253049
2017-09-21[C++ PATCH] class member orderingNathan Sidwell2-23/+37
https://gcc.gnu.org/ml/gcc-patches/2017-09/msg01426.html * name-lookup.c (member_name_cmp): Use DECL_UID for final ordering. From-SVN: r253048
2017-09-21enable handling of -gno- command-line options as negated prefixesAlexandre Oliva10-35/+79
This patch that adds -g to the set of negatable prefixes along with -f, -m and -W. Besides the mapping from -gno- to negated -g in option_map and adding g to the [fmW] matches for negatable options, I had to introduce gno- as an remapping prefix, for the option searching machinery to backtrack to and recognize as a remapping prefix, instead of backtracking to -g and stopping at it as if no-* was its Joined argument. Adding such remapping prefixes to preempt further backtracking can be accomplished by introducing the prefix as an Undocumented option with a Joined argument and without Driver, Target, Common, or any language-specific option. Whenever we match such a fake options prefix, we abandon further backtracking (it matches, after all), but find_opt returns the same code it would if it hadn't found any match, so that we resort to option mapping. I've arranged for such remapping prefixes to not be considered when looking for and suggesting a correct spelling for misspelled options. While testing that, I found a few -W-started options that were not marked as RejectNegative but should (-Wno-a, is not something we'd like to suggest ;-) I've also marked as such -g-started options that it makes no sense to negate, and removed the explicit -gno- ones, allowing their opposites to be negated. for gcc/ChangeLog * common.opt (Wa, Wl, Wp, g, gz=): Add RejectNegative. (gno-column-info): Remove. (gcolumn-info): Drop RejectNegative. (gno-): New prefix. (gno-record-gcc-switches): Remove. (grecord-gcc-switches): Drop RejectNegative. (gno-split-dwarf): Remove. (gsplit-dwarf): Drop RejectNegative. (gno-strict-dwarf): Remove. (gstrict-dwarf): Drop RejectNegative. * config/darwin.opt (gfull, gused): Add RejectNegative. * dwarf2out.c (gen_producer_string): Drop gno-record-gcc-switches handler. * optc-gen.awk: Add g to prefixes with negative forms. * opts-common.c (remapping_prefix_p): New. (find_opt): Check it. (generate_canonical_option): Test g prefix. (option_map): Add -gno- mapping. (add_misspelling_candidates): Check remapping_prefix_p. for gcc/ada/ChangeLog * gcc-interface/lang.opt (gant, gnatO, gnat): Add RejectNegative. for gcc/c-family/ChangeLog * c.opt (gen-decls): Add RejectNegative. From-SVN: r253047
2017-09-21Daily bump.GCC Administrator1-1/+1
From-SVN: r253046
2017-09-20libgo: fix build when using -enable-static=noIan Lance Taylor1-1/+1
With -enable-static=no we don't build non-pic objects, but libgotool.a is built from non-pic objects. Build the packages that go into libgotool.a in static mode in all cases. Also ensure that internal test packages are built, since nothing explicitly depended on them. Reviewed-on: https://go-review.googlesource.com/65050 From-SVN: r253042
2017-09-20Fix C++ testsuite fallout from r252976.Martin Sebor4-4/+12
gcc/testsuite/ChangeLog: PR c/81854 * g++.dg/ext/attr-ifunc-2.C: Correct type errors. * g++.dg/ext/attr-ifunc-4.C: Ditto. * lib/target-supports.exp: Adjust for C++. From-SVN: r253041
2017-09-20Fix testsuite fallout from r252976.Martin Sebor8-12/+25
gcc/testsuite/ChangeLog: PR c/81854 * gcc.dg/attr-ifunc-1.c: Correct type errors. * gcc.dg/attr-ifunc-2.c: Ditto. * gcc.dg/attr-ifunc-3.c: Ditto. * gcc.dg/attr-ifunc-4.c: Ditto. * gcc.dg/attr-ifunc-5.c: Ditto. * gcc.dg/pr81854.c: Require ifunc support. * gcc/testsuite/lib/target-supports.exp: Correct type error. From-SVN: r253037
2017-09-20powerpcspe.c (rs6000_expand_prologue): Fix thinko in stack clash protection ↵Jeff Law2-1/+4
support. * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix thinko in stack clash protection support. From-SVN: r253036
2017-09-20explow.c (compute_stack_clash_protection_loop_data): Use CONST_INT_P instead ↵Jeff Law4-10/+26
of explicit test. * explow.c (compute_stack_clash_protection_loop_data): Use CONST_INT_P instead of explicit test. Verify object is a CONST_INT_P before looking at INTVAL. (anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P instead of explicit test. * gcc.target/i386/stack-check-11.c: Update test and regexp so that it works for both i?86 and x86_64. From-SVN: r253034
2017-09-20rs6000: Don't touch below the stack pointer (PR77687)Segher Boessenkool4-4/+33
With the 32-bit SVR4 ABI we don't have a red zone, so we have to restore the callee-saved registers before we restore the stack pointer. The previous fix for this PR failed in two ways, for huge frames: first, we use a negative offset from r11 in that case, so the (mem:BLK 11) access does no good; second, sched does not handle accesses to mem:BLK correctly in this case (does not make dependencies). This patch fixes it by doing a store to (mem:BLK (scratch)) instead. This means no unrelated (not to stack) loads/stores can be moved over the stack restore either, but so be it. PR target/77687 * config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch address instead of to r1 and r11. gcc/testsuite/ PR target/77687 * gcc.target/powerpc/pr77687.c: New testcase. From-SVN: r253033
2017-09-20P0409R2 - allow lambda capture [=, this]Jakub Jelinek5-3/+34
P0409R2 - allow lambda capture [=, this] * parser.c (cp_parser_lambda_introducer): For cxx2a don't pedwarn on redundant [=, this]. * g++.dg/cpp1z/lambda-this1.C: Don't expect error for c++2a on [=, this] capture. Add further tests. * g++.dg/cpp0x/lambda/lambda-capture-redundancy.C: Don't expect error for c++2a on [=, this] capture. From-SVN: r253030
2017-09-20cplusplus.C: Test that __cplusplus is equal to 201703L.Jakub Jelinek3-2/+13
* g++.dg/cpp1z/cplusplus.C: Test that __cplusplus is equal to 201703L. * g++.dg/cpp1z/cplusplus_1z.C: New test. From-SVN: r253029
2017-09-20syscall: enable ParseDirent for AIXIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/64990 From-SVN: r253022
2017-09-20syscall: workaround for getsockname bug in AIXIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/64552 From-SVN: r253021