aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-11-23rs6000.c (rs6000_gimple_fold_builtin): Formatting fixes.Jakub Jelinek2-297/+261
* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Formatting fixes. Declare temp and g variables at the top in order to avoid {} in most of the cases. From-SVN: r255118
2017-11-23parser.c (cp_parser_omp_declare): Change return type to bool from void, ↵Jakub Jelinek2-7/+14
return true for declare simd. * parser.c (cp_parser_omp_declare): Change return type to bool from void, return true for declare simd. (cp_parser_pragma): Return cp_parser_omp_declare returned value rather than always false. From-SVN: r255117
2017-11-23c-parser.c (c_parser_omp_declare_simd): Reject declare simd in pragma_stmt ↵Jakub Jelinek5-13/+44
context. * c-parser.c (c_parser_omp_declare_simd): Reject declare simd in pragma_stmt context. * gcc.dg/gomp/declare-simd-1.c (f9): Remove. * gcc.dg/gomp/declare-simd-5.c: New test. From-SVN: r255116
2017-11-23re PR fortran/81841 (THREADPRIVATE (OpenMP) wrongly rejected in BLOCK DATA)Jakub Jelinek4-0/+39
PR fortran/81841 * parse.c (parse_spec): Allow ST_OMP_THREADPRIVATE inside of BLOCK DATA. * libgomp.fortran/pr81841.f90: New test. From-SVN: r255115
2017-11-23pr65240-1.C: Add -Wno-return-type to dg-options.Jakub Jelinek5-4/+11
* g++.dg/pr65240-1.C: Add -Wno-return-type to dg-options. * g++.dg/pr65240-2.C: Likewise. * g++.dg/pr65240-3.C: Likewise. * g++.dg/pr65240-4.C: Likewise. From-SVN: r255114
2017-11-23Simplify ptr - 0Marc Glisse2-0/+9
2017-11-23 Marc Glisse <marc.glisse@inria.fr> * match.pd (ptr-0): New transformation. From-SVN: r255113
2017-11-23This patch adds support for modelling the varying costs of different ↵Charles Baylis3-0/+134
addressing modes. This patch adds support for modelling the varying costs of different addressing modes. The generic cost table treats all addressing modes as having equal cost. gcc/ChangeLog: 2017-11-23 Charles Baylis <charles.baylis@linaro.org> * config/arm/arm-protos.h (enum arm_addr_mode_op): New. (struct addr_mode_cost_table): New. (struct tune_params): Add field addr_mode_costs. * config/arm/arm.c (generic_addr_mode_costs): New. (arm_slowmul_tune): Initialise addr_mode_costs field. (arm_fastmul_tune): Likewise. (arm_strongarm_tune): Likewise. (arm_xscale_tune): Likewise. (arm_9e_tune): Likewise. (arm_marvell_pj4_tune): Likewise. (arm_v6t2_tune): Likewise. (arm_cortex_tune): Likewise. (arm_cortex_a8_tune): Likewise. (arm_cortex_a7_tune): Likewise. (arm_cortex_a15_tune): Likewise. (arm_cortex_a35_tune): Likewise. (arm_cortex_a53_tune): Likewise. (arm_cortex_a57_tune): Likewise. (arm_exynosm1_tune): Likewise. (arm_xgene1_tune): Likewise. (arm_cortex_a5_tune): Likewise. (arm_cortex_a9_tune): Likewise. (arm_cortex_a12_tune): Likewise. (arm_cortex_a73_tune): Likewise. (arm_v7m_tune): Likewise. (arm_cortex_m7_tune): Likewise. (arm_v6m_tune): Likewise. (arm_fa726te_tune): Likewise. (arm_mem_costs): Use table lookup to calculate cost of addressing mode. From-SVN: r255112
2017-11-23[ARM] Refactor costs calculation for MEM.Charles Baylis6-25/+198
This patch moves the calculation of costs for MEM into a separate function, and reforms the calculation into two parts. Firstly any additional cost of the addressing mode is calculated, and then the cost of the memory access itself is added. In this patch, the calculation of the cost of the addressing mode is omitted, to be added in a subsequent patch. gcc/ChangeLog: <date> Charles Baylis <charles.baylis@linaro.org> * config/arm/arm.c (arm_mem_costs): New function. (arm_rtx_costs_internal): Use arm_mem_costs. gcc/testsuite/ChangeLog: <date> Charles Baylis <charles.baylis@linaro.org> * gcc.target/arm/addr-modes-float.c: New test. * gcc.target/arm/addr-modes-int.c: New test. * gcc.target/arm/addr-modes.h: New header. From-SVN: r255111
2017-11-23re PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments)Thomas Koenig15-28/+54
2017-11-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/36313 * m4/maxloc2s.m4: Replace int for character length by gfc_charlen_type. * m4/minloc2s.m4: Likewise. * generated./maxloc2_16_s1.c: Regenerated. * generated./maxloc2_16_s4.c: Regenerated. * generated./maxloc2_4_s1.c: Regenerated. * generated./maxloc2_4_s4.c: Regenerated. * generated./maxloc2_8_s1.c: Regenerated. * generated./maxloc2_8_s4.c: Regenerated. * generated./minloc2_16_s1.c: Regenerated. * generated./minloc2_16_s4.c: Regenerated. * generated./minloc2_4_s1.c: Regenerated. * generated./minloc2_4_s4.c: Regenerated. * generated./minloc2_8_s1.c: Regenerated. * generated./minloc2_8_s4.c: Regenerated. From-SVN: r255109
2017-11-23Fix .debug_rnglists generation with -gdwarf-5 -gsplit-dwarf.Mark Wielaard2-9/+27
Early debug broke generation of .debug_rnglists when using both -gdwarf5 and -gsplit-dwarf. It introduces a generation for init_sections_and_labels, but doesn't account for the generation of up to 4 unique ranges labels, two created in init_sections_and_labels and two in output_rnglists. Fix this by passing generation to output_rnglists and creating 4 unique labels per generation. Without this fix using -gdwarf-5 -gsplit-dwarf could result in: Error: symbol `.Ldebug_ranges2' is already defined gcc/ChangeLog: * dwarf2out.c (init_sections_and_labels): Use generation to create unique ranges_section_label and ranges_base_label. Return generation. (output_rnglists): Add generation argument. Use generation to create unique ranges labels. (dwarf2out_finish): Get generation from init_sections_and_labels and pass generation to output_rnglists. From-SVN: r255107
2017-11-23generic.texi (ANNOTATE_EXPR): Document 3rd operand.Eric Botcazou49-219/+522
* doc/generic.texi (ANNOTATE_EXPR): Document 3rd operand. * cfgloop.h (struct loop): Add unroll field. * function.h (struct function): Add has_unroll bitfield. * gimplify.c (gimple_boolify) <ANNOTATE_EXPR>: Deal with unroll kind. (gimplify_expr) <ANNOTATE_EXPR>: Propagate 3rd operand. * loop-init.c (pass_loop2::gate): Return true if cfun->has_unroll. (pass_rtl_unroll_loops::gate): Likewise. * loop-unroll.c (decide_unrolling): Tweak note message. Skip loops for which loop->unroll==1. (decide_unroll_constant_iterations): Use note for consistency and take loop->unroll into account. Return early if loop->unroll is set. Fix thinko in existing test. (decide_unroll_runtime_iterations): Use note for consistency and take loop->unroll into account. (decide_unroll_stupid): Likewise. * lto-streamer-in.c (input_cfg): Read loop->unroll. * lto-streamer-out.c (output_cfg): Write loop->unroll. * tree-cfg.c (replace_loop_annotate_in_block) <annot_expr_unroll_kind>: New case. (replace_loop_annotate) <annot_expr_unroll_kind>: Likewise. (print_loop): Print loop->unroll if set. * tree-core.h (enum annot_expr_kind): Add annot_expr_unroll_kind. * tree-inline.c (copy_loops): Copy unroll and set cfun->has_unroll. * tree-pretty-print.c (dump_generic_node) <annot_expr_unroll_kind>: New case. * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Bail out if loop->unroll is set and smaller than the trip count. Otherwise bypass entirely the heuristics if loop->unroll is set. Remove dead note. Fix off-by-one bug in other note. (try_peel_loop): Bail out if loop->unroll is set. Fix formatting. (tree_unroll_loops_completely_1): Force unrolling if loop->unroll is greater than 1. (tree_unroll_loops_completely): Make static. (pass_complete_unroll::execute): Use correct type for variable. (pass_complete_unrolli::execute): Fix formatting. * tree.def (ANNOTATE_EXPR): Add 3rd operand. ada/ * gcc-interface/trans.c (gnat_gimplify_stmt) <LOOP_STMT>: Pass 3rd operand to ANNOTATE_EXPR and also pass unrolling hints. c/ * c-parser.c (c_parser_while_statement): Pass 3rd operand to ANNOTATE_EXPR. (c_parser_do_statement): Likewise. (c_parser_for_statement): Likewise. cp/ * pt.c (tsubst_expr) <ANNOTATE_EXPR>: Recurse on 3rd operand. * semantics.c (finish_while_stmt_cond): Pass 3rd operand to ANNOTATE_EXPR. (finish_do_stmt): Likewise. (finish_for_cond): Likewise. fortran/ * trans-stmt.c (gfc_trans_forall_loop): Pass 3rd operand to ANNOTATE_EXPR. From-SVN: r255106
2017-11-23i386.h (TARGET_PREFER_AVX256): Also enable when TARGET_PREFER_AVX128 is set.Sergey Shalnov2-1/+7
* config/i386/i386.h (TARGET_PREFER_AVX256): Also enable when TARGET_PREFER_AVX128 is set. From-SVN: r255105
2017-11-23ipa-profile.c (ipa_propagate_frequency_1): Use count instead of frequency.Jan Hubicka3-13/+14
* ipa-profile.c (ipa_propagate_frequency_1): Use count instead of frequency. * cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies. (cgraph_edge::maybe_hot_p): Use sreal frequencies. From-SVN: r255104
2017-11-23ipa-fnsummary.c (record_modified_bb_info): Use sreal frequencies.Jan Hubicka4-91/+57
* ipa-fnsummary.c (record_modified_bb_info): Use sreal frequencies. Fix estimation of aggregate parameters. * gcc.dg/ipa/inline-1.c: Update template. From-SVN: r255103
2017-11-23cgraphclones.c (cgraph_node::create_clone): Fix updating of profile when ↵Jan Hubicka2-1/+9
inlining. * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile when inlining. From-SVN: r255102
2017-11-23[libgccjit] Wrap RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE in ↵Tom de Vries2-1/+8
JIT_{BEGIN,END}_STMT. 2017-11-23 Tom de Vries <tom@codesourcery.com> * libgccjit.c (RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): Wrap in JIT_{BEGIN,END}_STMT. From-SVN: r255101
2017-11-23[sh] Wrap ASM_OUTPUT_ADDR_VEC_ELT in do {} while (0)Tom de Vries2-6/+11
2017-11-23 Tom de Vries <tom@codesourcery.com> * config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)". From-SVN: r255100
2017-11-23[libobjc] Wrap CLASS_TABLE_HASH in do {} while (0)Tom de Vries2-8/+14
2017-11-23 Tom de Vries <tom@codesourcery.com> * class.c (CLASS_TABLE_HASH): Wrap in "do {} while (0)". From-SVN: r255099
2017-11-23[ft32] Remove semicolon after ASM_OUTPUT_ADDR_VEC_ELTTom de Vries2-1/+6
2017-11-23 Tom de Vries <tom@codesourcery.com> * config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after macro. From-SVN: r255098
2017-11-23re PR target/83111 ([sh] stack smashing detected in gen_udivsi3)Oleg Endo2-26/+34
gcc/ PR target/83111 * config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel, sibcall_value_pcrel_fdpic): Use local variable instead of operands[3]. (calli_tbr_rel): Add missing operand 2. (call_valuei_tbr_rel): Add missing operand 3. From-SVN: r255096
2017-11-23re PR middle-end/82253 (ICE in convert_move, at expr.c:604)Jakub Jelinek4-8/+79
PR middle-end/82253 * expr.c (expand_assignment): For CONCAT to_rtx, complex type from and bitpos/bitsize covering the whole destination, use store_expr only if the complex mode is the same. Otherwise, use expand_normal and if it returns CONCAT, subreg each part separately instead of trying to subreg the whole result. * gfortran.dg/pr82253.f90: New test. From-SVN: r255095
2017-11-23re PR fortran/82814 (ICE from submodule character function)Paul Thomas4-0/+72
2017-11-23 Paul Thomas <pault@gcc.gnu.org> PR fortran/82814 * trans-types.c (gfc_sym_type): If a character function result is missing the charlen backend_decl, use the one from the name- space procedure symbol, if present. 2017-11-23 Paul Thomas <pault@gcc.gnu.org> PR fortran/82814 * gfortran.dg/submodule_31.f08: New test. From-SVN: r255094
2017-11-23re PR tree-optimization/23094 (store ccp, or store copy prop misses an ↵Richard Biener4-1/+94
optimization) 2017-11-23 Richard Biener <rguenther@suse.de> PR tree-optimization/23094 * tree-ssa-sccvn.c (vuse_ssa_val): Handle VN_TOP when we come here from walking over backedges in the first iteration. (vn_reference_lookup_3): Skip clobbers that store the same value. * gcc.dg/tree-ssa/ssa-fre-61.c: New testcase. From-SVN: r255093
2017-11-23re PR tree-optimization/81403 (wrong code at -O3)Richard Biener2-45/+32
2017-11-23 Richard Biener <rguenther@suse.de> PR tree-optimization/81403 * tree-ssa-pre.c (get_representative_for): Add parameter specifying a block we need a leader relative to. (phi_translate_1): For nary processing require a leader from get_representative_for given we run expression simplification using match-and-simplify. Remove previous fix. From-SVN: r255092
2017-11-23re PR tree-optimization/83089 (ICE: Segmentation fault (in ↵Richard Biener2-0/+6
instantiate_scev_name)) 2017-11-23 Richard Biener <rguenther@suse.de> PR tree-optimization/83089 * gcc.dg/pr83089.c: Require pthread. From-SVN: r255091
2017-11-23cmd/go, go/internal/gccgoimporter: pass -X to ar on AIXIan Lance Taylor3-4/+13
Reviewed-on: https://go-review.googlesource.com/72930 From-SVN: r255090
2017-11-23Daily bump.GCC Administrator1-1/+1
From-SVN: r255089
2017-11-22gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range): Use new ↵Jeff Law4-12/+41
method allocate_value_range rather than accessing the... * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range): Use new method allocate_value_range rather than accessing the vrp_value_range_pool data member directly. * tree-vrp.c (simplify_stmt_for_jump_threading): Tweak slightly to use extract_range_from_stmt method to avoid need for extract_range_from_assignment method. (vrp_prop::vrp_finalize): Use set_lattice_propagation_complete method rather than setting values_propgated data member directly. * vr-values.h (class vr_values): Privatize vrp_value_range_pool, and values propagated data members and extract_range_from_assignment method. Reorder private data members to conform to standards. Add new methods set_lattice_propagation_complete and allocate_value_range. From-SVN: r255086
2017-11-22* g++.dg/abi/pr68355.C: Don't expect tail call on ia32.Jakub Jelinek2-1/+3
From-SVN: r255085
2017-11-22re PR c++/82401 (error: qsort comparator non-negative on sorted output: 1 in ↵Jakub Jelinek4-1/+30
insert_late_enum_def_bindings on an invalid code) PR c++/82401 * name-lookup.c (member_name_cmp): Return 0 if a == b. * g++.dg/cpp0x/pr82401.C: New test. From-SVN: r255084
2017-11-22re PR rtl-optimization/83030 (ICE in create_pseudo_cfg, at dwarf2cfi.c:2840)Eric Botcazou5-73/+84
PR rtl-optimization/83030 * doc/rtl.texi (Flags in an RTL Expression): Alphabetize, add entry for CROSSING_JUMP_P and mention usage of 'jump' for JUMP_INSNs. (Insns): Delete entry for REG_CROSSING_JUMP in register notes. * bb-reorder.c (update_crossing_jump_flags): Do not test whether the CROSSING_JUMP_P flag is already set before setting it. * cfgrtl.c (fixup_partition_crossing): Likewise. * reorg.c (relax_delay_slots): Do not consider a CROSSING_JUMP_P insn as useless. From-SVN: r255083
2017-11-22jit: update test suite for change to -Warray-boundsDavid Malcolm2-1/+9
jit.dg/test-error-array-bounds.c is a test of how libgccjit handles errors coming from the middle-end, using -Warray-bounds as an example. It started failing as of r254830 (aka 987b3316c4e7c908e3c7d2151c20971f9707ad66), due to that commit changing the wording of the message. This commit fixes the jit testcase by updating it to use the new wording. gcc/testsuite/ChangeLog: PR tree-optimization/82588 PR tree-optimization/82583 * jit.dg/test-error-array-bounds.c (verify_code): Update expected error message from -Warray-bounds. From-SVN: r255082
2017-11-22* g++.dg/graphite/pr41562.C: Add -Wno-return-type.Jakub Jelinek2-1/+5
From-SVN: r255081
2017-11-22re PR libgomp/83106 (libgomp/target.c:2671:2: error: ‘strncat’ specified ↵Jakub Jelinek2-5/+15
bound 5 equals source length [-Werror=stringop-overflow=]) PR libgomp/83106 * target.c (gomp_target_init): Compute lengths just once and use them in both malloc size and subsequent copying. From-SVN: r255080
2017-11-22simplify-rtx.c (simplify_binary_operation_1): Handle the case where both ↵Jakub Jelinek2-0/+10
arguments are using gen_const_vec_series. * simplify-rtx.c (simplify_binary_operation_1) <case VEC_SERIES>: Handle the case where both arguments are using gen_const_vec_series. From-SVN: r255079
2017-11-22Make shift argument to eoshift0 and eoshift2 be of type index_typeJanne Blomqvist3-6/+7
Test case that requires 4 GB RAM that exercises eoshift0: program main implicit none integer(1) :: line(2_8**31+10) line = 42 line = eoshift(line, 2_8**31+7) print *, line(1:4) print *, line((ubound(line, 1, kind=8)-4):ubound(line, 1, kind=8)) end program main Before patch: ❯ ./a.out 0 0 0 0 42 42 42 42 42 With patch: ❯ ./a.out 42 42 42 0 0 0 0 0 0 Regtested on x86_64-pc-linux-gnu. libgfortran/ChangeLog: 2017-11-22 Janne Blomqvist <jb@gcc.gnu.org> * intrinsics/eoshift0.c (eoshift0): Make shift an index_type. * intrinsics/eoshift2.c (eoshift2): Make shift an index_type. From-SVN: r255077
2017-11-22C/C++: fix quoting of "aka" typedef information (PR 62170)David Malcolm25-57/+255
PR 62170 describes a problem with how the quoting in pp_format interacts with the "aka" information for typedefs in %qT for the C family of frontends, and also now for %qH and %qI in the C++ frontend: we print: 'Py_ssize_t* {aka int*}' ^^^^^^^^^^^^^^^^^^^^^^ colorized as "quote" i.e. '[START_COLOR]Py_ssize_t* {aka int*}[END_COLOR]' when we should print: 'Py_ssize_t*' {aka 'int*'} ^^^^^^^^^^^ ^^^^ colorized as "quote" i.e. '[START_COLOR]Py_ssize_t*[END_COLOR]' {aka '[START_COLOR]int*[END_COLOR]'} where the opening and closing quote characters and colorization are added by the 'q' handling within pp_format. This patch fixes the quoting by updating the %T handling in C and C++ and the %H/%I handling in C++ to insert the quoting appropriately. It converts the "quote" param of the pp_format_decoder callback from bool to bool *, allowing for the %T and %H/%I handlers to write false back to it, to avoid printing the closing quote for the cases like the above where the trailing closing quote isn't needed. It introduces pp_begin_quote/pp_end_quote to simplify this. These take a "bool show_color", rather than using "pp_show_color (pp)" since cxx_pp's pp_show_color isn't currently initialized (since cxx_initialize_diagnostics happens before diagnostic_color_init). gcc/c/ChangeLog: PR c++/62170 * c-objc-common.c (c_tree_printer): Convert penultimate param from bool to bool *. Within '%T' handling, if showing an "aka", use "quoted" param to add appropriate quoting. gcc/cp/ChangeLog: PR c++/62170 * error.c (type_to_string): Add leading comment. Add params "postprocessed", "quote", and "show_color", using them to fix quoting of the "aka" for types involving typedefs. (arg_to_string): Update for new params to type_to_string. (cxx_format_postprocessor::handle): Likewise. (cp_printer): Convert penultimate param from bool to bool *. Update call to type_to_string and calls to defer_phase_2_of_type_diff. gcc/fortran/ChangeLog: PR c++/62170 * error.c (gfc_notify_std): Convert "quoted" param from bool to bool *. gcc/ChangeLog: PR c++/62170 * pretty-print.c (pp_format): Move quoting implementation to pp_begin_quote and pp_end_quote. Update pp_format_decoder call to pass address of "quote" local. (pp_begin_quote): New function. (pp_end_quote): New function. * pretty-print.h (printer_fn): Convert penultimate param from bool to bool *. (pp_begin_quote): New decl. (pp_end_quote): New decl. * tree-diagnostic.c (default_tree_printer): Convert penultimate param from bool to bool *. * tree-diagnostic.h (default_tree_printer): Likewise. gcc/testsuite/ChangeLog: PR c++/62170 * g++.dg/diagnostic/aka1.C: Update expected error messages to reflect fixes to quoting. * g++.dg/diagnostic/aka2.C: New test case. * g++.dg/parse/error55.C: Update expected error messages to reflect fixes to quoting. * gcc.dg/diag-aka-1.c: Likewise. * gcc.dg/diag-aka-2.c: New test case. * gcc.dg/pr13804-1.c: Update expected error messages to reflect fixes to quoting. * gcc.dg/pr56980.c: Likewise. * gcc.dg/pr65050.c: Likewise. * gcc.dg/redecl-14.c: Likewise. * gcc.dg/utf16-4.c Likewise. * gcc.target/i386/sse-vect-types.c (__m128d): Likewise. * obj-c++.dg/invalid-type-1.mm: Likewise. * objc.dg/proto-lossage-4.m: Likewise. From-SVN: r255076
2017-11-22target-supports.exp (check_effective_target_bswap16): RemoveUros Bizjak12-74/+42
* lib/target-supports.exp (check_effective_target_bswap16): Remove (check_effective_target_bswap32): Ditto. (check_effective_target_bswap64): Ditto. * gcc.dg/optimize-bswaphi-1.c: Use bswap effective target instead of bswap16. * gcc.dg/optimize-bswapsi-1.c: Use bswap effective target instead of bswap32. * gcc.dg/optimize-bswapsi-2.c: Ditto. * gcc.dg/optimize-bswapsi-3.c: Ditto. * gcc.dg/optimize-bswapsi-4.c: Ditto. * gcc.dg/optimize-bswapsi-5.c: Ditto. * gcc.dg/pr77673.c: Ditto. * gcc.dg/optimize-bswapdi-1.c: Use bswap effective target instead of bswap64. * gcc.dg/optimize-bswapdi-2.c: Ditto. * gcc.dg/optimize-bswapdi-3.c: Ditto. From-SVN: r255075
2017-11-22* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer)Jeff Law5-92/+127
Initialize vr_values. (evrp_range_analyzer::try_find_new_range): Call methods attached to vr_values via vr_values class instance rather than delegators. (evrp_range_analyzer::record_ranges_from_phis): Likewise. (evrp_range_analyzer::record_ranges_from_stmt): Likewise. (evrp_range_analyzer::push_value_range): Likewise. (evrp_range_analyzer::pop_value_range): Likewise. * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove most delegators. Those remaining are exposed as public interfaces. Make vr_values a pointer and private. (evrp_range_analyzer::~evrp_range_analyzer): Delete the attached vr_values. (evrp_range_analyzer::get_vr_value): New method. * gimple-ssa-evrp.c (class evrp_folder): Use DISABLE_COPY_AND_ASSIGN. (evrp_folder::evrp_folder): New ctor to initialize vr_values. (class evrp_dom_walker): Attach evrp_folder class, initialize it in the ctor. Remove temporary delegators. (evrp_dom_walker::before_dom_children): Call methods in attached evrp_range_analyzer class via class instance pointer. Use free value_range_constant_singleton to remove need for op_with_constant_singleton_value delegator method. Do not create a vrp_prop class instance for every call! Narrow scope of a couple variables. (evrp_dom_walker::cleanup): Call methods in attached evrp_range_analyzer class via class instance pointer. * vr-values.h (class vr_values): Privatize many methods and data members. From-SVN: r255074
2017-11-22Replace REDUC_*_EXPRs with internal functions.Richard Sandiford15-186/+196
This patch replaces the REDUC_*_EXPR tree codes with internal functions. This is needed so that the upcoming in-order reductions can also use internal functions without too much complication. 2017-11-22 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Delete. * cfgexpand.c (expand_debug_expr): Remove handling for them. * expr.c (expand_expr_real_2): Likewise. * fold-const.c (const_unop): Likewise. * optabs-tree.c (optab_for_tree_code): Likewise. * tree-cfg.c (verify_gimple_assign_unary): Likewise. * tree-inline.c (estimate_operator_cost): Likewise. * tree-pretty-print.c (dump_generic_node): Likewise. (op_code_prio): Likewise. (op_symbol_code): Likewise. * internal-fn.def (DEF_INTERNAL_SIGNED_OPTAB_FN): Define. (IFN_REDUC_PLUS, IFN_REDUC_MAX, IFN_REDUC_MIN): New internal functions. * internal-fn.c (direct_internal_fn_optab): New function. (direct_internal_fn_array, direct_internal_fn_supported_p (internal_fn_expanders): Handle DEF_INTERNAL_SIGNED_OPTAB_FN. * fold-const-call.c (fold_const_reduction): New function. (fold_const_call): Handle CFN_REDUC_PLUS, CFN_REDUC_MAX and CFN_REDUC_MIN. * tree-vect-loop.c: Include internal-fn.h. (reduction_code_for_scalar_code): Rename to... (reduction_fn_for_scalar_code): ...this and return an internal function. (vect_model_reduction_cost): Take an internal_fn rather than a tree_code. (vect_create_epilog_for_reduction): Likewise. Build calls rather than assignments. (vectorizable_reduction): Use internal functions rather than tree codes for the reduction operation. Update calls to the functions above. * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin): Use calls to internal functions rather than REDUC tree codes. * config/aarch64/aarch64-simd.md: Update comment accordingly. From-SVN: r255073
2017-11-22PR 83097 Use __BYTE_ORDER__ predefined macro instead of runtime checkJanne Blomqvist8-54/+26
By using the __BYTE_ORDER__ predefined macro we don't need the determine_endianness function anymore. Regtested on x86_64-pc-linux-gnu. libgfortran/ChangeLog: 2017-11-22 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/83097 * io/inquire.c (inquire_via_unit): Use __BYTE_ORDER__ predefined macro. * io/open.c (st_open): Likewise. * io/transfer.c (data_transfer_init): Likewise. * io/write.c (btoa_big): Likewise. (otoa_big): Likewise. (ztoa_big): Likewise. * libgfortran.h (big_endian): Remove variable. (GFOR_POINTER_TO_L1): Use __BYTE_ORDER__ macro. * runtime/main.c (determine_endianness): Remove function. (init): Remove call to determine_endianness. * runtime/minimal.c: Remove setting big_endian variable. From-SVN: r255072
2017-11-22[PATCH] Add myself as GCC maintainerSudakshina Das2-0/+5
*** ChangeLog *** 2017-11-22 Sudakshina Das <sudi.das@arm.com> * MAINTAINERS (Write After Approval): Add myself. From-SVN: r255071
2017-11-22re PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments)Thomas Koenig58-33/+14711
2017-11-22 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/36313 * Makefile.am: Add i_maxloc0s_c, i_maxloc1s_c, i_maxloc2s_c, i_minloc0s_c, i_minloc1s_c and i_minloc2s_c. * Makefile.in: Regenerated. * generated/maxloc0_16_s1.c: New file. * generated/maxloc0_16_s4.c: New file. * generated/maxloc0_4_s1.c: New file. * generated/maxloc0_4_s4.c: New file. * generated/maxloc0_8_s1.c: New file. * generated/maxloc0_8_s4.c: New file. * generated/maxloc1_16_s1.c: New file. * generated/maxloc1_16_s4.c: New file. * generated/maxloc1_4_s1.c: New file. * generated/maxloc1_4_s4.c: New file. * generated/maxloc1_8_s1.c: New file. * generated/maxloc1_8_s4.c: New file. * generated/maxloc2_16_s1.c: New file. * generated/maxloc2_16_s4.c: New file. * generated/maxloc2_4_s1.c: New file. * generated/maxloc2_4_s4.c: New file. * generated/maxloc2_8_s1.c: New file. * generated/maxloc2_8_s4.c: New file. * generated/minloc0_16_s1.c: New file. * generated/minloc0_16_s4.c: New file. * generated/minloc0_4_s1.c: New file. * generated/minloc0_4_s4.c: New file. * generated/minloc0_8_s1.c: New file. * generated/minloc0_8_s4.c: New file. * generated/minloc1_16_s1.c: New file. * generated/minloc1_16_s4.c: New file. * generated/minloc1_4_s1.c: New file. * generated/minloc1_4_s4.c: New file. * generated/minloc1_8_s1.c: New file. * generated/minloc1_8_s4.c: New file. * generated/minloc2_16_s1.c: New file. * generated/minloc2_16_s4.c: New file. * generated/minloc2_4_s1.c: New file. * generated/minloc2_4_s4.c: New file. * generated/minloc2_8_s1.c: New file. * generated/minloc2_8_s4.c: New file. * m4/iforeach-s.m4: New file. * m4/ifunction-s.m4: New file. * m4/maxloc0s.m4: New file. * m4/maxloc1s.m4: New file. * m4/maxloc2s.m4: New file. * m4/minloc0s.m4: New file. * m4/minloc1s.m4: New file. * m4/minloc2s.m4: New file. * gfortran.map: Add new functions. * libgfortran.h: Add gfc_array_s1 and gfc_array_s4. 2017-11-22 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/36313 * check.c (int_or_real_or_char_check_f2003): New function. * iresolve.c (gfc_resolve_maxloc): Add number "2" for character arguments and rank-zero return value. (gfc_resolve_minloc): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Handle case of character arguments and rank-zero return value by removing unneeded arguments and calling the library function. 2017-11-22 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/36313 * gfortran.dg/maxloc_string_1.f90: New test. * gfortran.dg/minloc_string_1.f90: New test. From-SVN: r255070
2017-11-22vxworks.c (vxworks_override_options): Pick default dwarf version from macro ↵Olivier Hainque4-3/+32
value, VXWORKS_DWARF_VERSION_DEFAULT. 2017-11-22 Olivier Hainque <hainque@adacore.com> * config/vxworks.c (vxworks_override_options): Pick default dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT. * config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and DWARF_GNAT_ENCODINGS_DEFAULT. * config/vxworksae.h: Likewise. From-SVN: r255069
2017-11-22Avoid two_valued_val_range_p for pointers.Marc Glisse4-1/+17
2017-11-22 Marc Glisse <marc.glisse@inria.fr> PR tree-optimization/83104 gcc/ * vr-values.c (simplify_stmt_using_ranges): Check integral argument, not result. gcc/testsuite/ * gcc.c-torture/compile/pr83104.c: New file. From-SVN: r255068
2017-11-22[ARM] Fix more -Wreturn-type fallout (gcc.target/arm/pr56184.C).Christophe Lyon2-1/+5
2017-11-22 Christophe Lyon <christophe.lyon@linaro.org> * gcc.target/arm/pr56184.C: Add -Wno-return-type to dg-options. From-SVN: r255067
2017-11-22re PR c++/60336 (empty struct value is passed differently in C and C++)Marek Polacek82-38/+1453
PR c++/60336 PR middle-end/67239 PR target/68355 * c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. * class.c (layout_class_type): Set DECL_PADDING_P on padding. * decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P. (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. * lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P. * calls.c (initialize_argument_information): Call warn_parameter_passing_abi target hook. (store_one_arg): Use 0 for empty record size. Don't push 0 size argument onto stack. (must_pass_in_stack_var_size_or_pad): Return false for empty types. * common.opt: Update -fabi-version description. * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty. (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of int_size_in_bytes. (ix86_is_empty_record): New function. (ix86_warn_parameter_passing_abi): New function. (TARGET_EMPTY_RECORD_P): Redefine. (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine. * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty. * doc/tm.texi: Regenerated. * doc/tm.texi.in (TARGET_EMPTY_RECORD_P, TARGET_WARN_PARAMETER_PASSING_ABI): Add. * dwarf2out.c (get_ultimate_context): Move to tree.c. * explow.c (hard_function_value): Call arg_int_size_in_bytes instead of int_size_in_bytes. * expr.c (copy_blkmode_to_reg): Likewise. * function.c (aggregate_value_p): Return 0 for empty types. (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook. (locate_and_pad_parm): Call arg size_in_bytes instead size_in_bytes. * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P. * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P. * target.def (empty_record_p, warn_parameter_passing_abi): New target hooks. * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook. (std_gimplify_va_arg_expr): Skip empty records. Call arg_size_in_bytes instead size_in_bytes. * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare. * tree-core.h (tree_type_common): Add empty_flag. (tree_decl_common): Update comments. * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream DECL_PADDING_P. (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P. * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream DECL_PADDING_P. (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P. * tree.c (default_is_empty_type): New function. (default_is_empty_record): New function. (arg_int_size_in_bytes): New function. (arg_size_in_bytes): New function. (get_ultimate_context): New function. * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and TRANSLATION_UNIT_WARN_EMPTY_P. (default_is_empty_record, arg_int_size_in_bytes, arg_size_in_bytes, get_ultimate_context): Declare. * g++.dg/abi/empty12.C: New test. * g++.dg/abi/empty12.h: New test. * g++.dg/abi/empty12a.c: New test. * g++.dg/abi/empty13.C: New test. * g++.dg/abi/empty13.h: New test. * g++.dg/abi/empty13a.c: New test. * g++.dg/abi/empty14.C: New test. * g++.dg/abi/empty14.h: New test. * g++.dg/abi/empty14a.c: New test. * g++.dg/abi/empty15.C: New test. * g++.dg/abi/empty15.h: New test. * g++.dg/abi/empty15a.c: New test. * g++.dg/abi/empty16.C: New test. * g++.dg/abi/empty16.h: New test. * g++.dg/abi/empty16a.c: New test. * g++.dg/abi/empty17.C: New test. * g++.dg/abi/empty17.h: New test. * g++.dg/abi/empty17a.c: New test. * g++.dg/abi/empty18.C: New test. * g++.dg/abi/empty18.h: New test. * g++.dg/abi/empty18a.c: New test. * g++.dg/abi/empty19.C: New test. * g++.dg/abi/empty19.h: New test. * g++.dg/abi/empty19a.c: New test. * g++.dg/abi/empty20.C: New test. * g++.dg/abi/empty21.C: New test. * g++.dg/abi/empty22.C: New test. * g++.dg/abi/empty22.h: New test. * g++.dg/abi/empty22a.c: New test. * g++.dg/abi/empty23.C: New test. * g++.dg/abi/empty24.C: New test. * g++.dg/abi/empty25.C: New test. * g++.dg/abi/empty25.h: New test. * g++.dg/abi/empty25a.c: New test. * g++.dg/abi/empty26.C: New test. * g++.dg/abi/empty26.h: New test. * g++.dg/abi/empty26a.c: New test. * g++.dg/abi/empty27.C: New test. * g++.dg/abi/empty28.C: New test. * g++.dg/abi/pr60336-1.C: New test. * g++.dg/abi/pr60336-10.C: New test. * g++.dg/abi/pr60336-11.C: New test. * g++.dg/abi/pr60336-12.C: New test. * g++.dg/abi/pr60336-2.C: New test. * g++.dg/abi/pr60336-3.C: New test. * g++.dg/abi/pr60336-4.C: New test. * g++.dg/abi/pr60336-5.C: New test. * g++.dg/abi/pr60336-6.C: New test. * g++.dg/abi/pr60336-7.C: New test. * g++.dg/abi/pr60336-8.C: New test. * g++.dg/abi/pr60336-9.C: New test. * g++.dg/abi/pr68355.C: New test. * g++.dg/lto/pr60336_0.C: New test. Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com> Co-Authored-By: Jason Merrill <jason@redhat.com> From-SVN: r255066
2017-11-22[ARM] Factor out CMSE register clearing codeThomas Preud'homme9-217/+235
Functions cmse_nonsecure_call_clear_caller_saved and cmse_nonsecure_entry_clear_before_return both contain very similar code to clear registers. What's worse, they differ slightly at times so if a bug is found in one careful thoughts is needed to decide whether the other function needs fixing too. This commit addresses the situation by factoring the two pieces of code into a new function. In doing so the code generated to clear VFP registers in cmse_nonsecure_call now uses the same sequence as cmse_nonsecure_entry functions. Tests expectation are thus updated accordingly. 2017-11-22 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/ * config/arm/arm.c (cmse_clear_registers): New function. (cmse_nonsecure_call_clear_caller_saved): Replace register clearing code by call to cmse_clear_registers. (cmse_nonsecure_entry_clear_before_return): Likewise. gcc/testsuite/ * gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: Adapt expectations to vmov instructions now generated. * gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: Likewise. * gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: Likewise. * gcc.target/arm/cmse/mainline/hard/cmse-13.c: Likewise. * gcc.target/arm/cmse/mainline/hard/cmse-7.c: Likewise. * gcc.target/arm/cmse/mainline/hard/cmse-8.c: Likewise. From-SVN: r255065
2017-11-222017-11-22 Tamar Christina <tamar.christina@arm.com>Tamar Christina7-0/+177
* config/arm/arm_neon.h (vdot_u32, vdotq_u32) (vdot_s32, vdotq_s32): New. (vdot_lane_u32, vdotq_lane_u32): New. (vdot_lane_s32, vdotq_lane_s32): New. gcc/testsuite/ 2017-11-22 Tamar Christina <tamar.christina@arm.com> * gcc.target/arm/simd/vdot-compile.c: New. * gcc.target/arm/simd/vect-dot-qi.h: New. * gcc.target/arm/simd/vect-dot-s8.c: New. * gcc.target/arm/simd/vect-dot-u8.c: New From-SVN: r255064
2017-11-22target-supports.exp (check_effective_target_bswap16): Do not skip on alpha ↵Uros Bizjak2-3/+6
and x86 targets. * lib/target-supports.exp (check_effective_target_bswap16): Do not skip on alpha and x86 targets. From-SVN: r255063