- 24 Nov, 2017 14 commits
-
-
re PR fortran/81304 (Bogus warning with -Wsurprising and -fopenmp: Type specified for intrinsic function 'min' / 'max') PR fortran/81304 * trans-openmp.c (gfc_trans_omp_array_reduction_or_udr): Set attr.implicit_type in intrinsic_sym to avoid undesirable warning. * testsuite/libgomp.fortran/pr81304.f90: New test. From-SVN: r255144
Jakub Jelinek committed -
This patch implements the some of the division optimizations discussed in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71026. The division reciprocal optimization now handles divisions by squares: x / (y * y) -> x * (1 / y) * (1 / y) This requires at least one more division by y before it triggers - the 3 divisions of (1/ y) are then CSEd into a single division. Overall this changes 1 division into 1 multiply, which is generally much faster. 2017-11-24 Jackson Woodruff <jackson.woodruff@arm.com> gcc/ PR tree-optimization/71026 * tree-ssa-math-opts (is_division_by_square, is_square_of): New. (insert_reciprocals): Change to insert reciprocals before a division by a square and to insert the square of a reciprocal. (execute_cse_reciprocals_1): Change to consider division by a square. (register_division_in): Add importance parameter. testsuite/ PR tree-optimization/71026 * gfortran.dg/extract_recip_1.f: New test. * gcc.dg/extract_recip_3.c: New test. * gcc.dg/extract_recip_4.c: New test. From-SVN: r255141
Jackson Woodruff committed -
2017-11-24 Richard Biener <rguenther@suse.de> PR tree-optimization/82402 * tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly set SSA_NAME_OCCURS_IN_ABNORMAL_PHI. * gcc.dg/torture/pr82402.c: New testcase. From-SVN: r255140
Richard Biener committed -
2017-11-24 Marc Glisse <marc.glisse@inria.fr> * match.pd (0-ptr): New transformation. From-SVN: r255139
Marc Glisse committed -
PR bootstrap/83015 * ipa-inline.c (inline_small_functions): Set current badnes correctly when skipping checking. From-SVN: r255138
Jan Hubicka committed -
From-SVN: r255137
Janne Blomqvist committed -
2017-11-24 Richard Biener <rguenther@suse.de> PR tree-optimization/83128 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs. (vn_reference_lookup_3): Likewise. * gcc.dg/tree-ssa/ssa-fre-62.c: New testcase. From-SVN: r255136
Richard Biener committed -
Still some prototypes that didn't match the implementation. 2017-11-24 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/36313 * m4/maxloc2s.m4: Replace int with gfc_charlen_type, take 3. * 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: r255135
Janne Blomqvist committed -
PR sanitizer/83014 * ubsan.c (ubsan_type_descriptor): Use pp_unsigned_wide_integer instead of pp_printf with HOST_WIDE_INT_PRINT_DEC. Avoid calling tree_to_uhwi twice. * gcc.dg/ubsan/pr83014.c: New test. From-SVN: r255134
Jakub Jelinek committed -
tree-object-size.c (pass_through_call): Use gimple_call_return_flags ERF_RETURN*ARG* for builtins other than... * tree-object-size.c (pass_through_call): Use gimple_call_return_flags ERF_RETURN*ARG* for builtins other than BUILT_IN_ASSUME_ALIGNED, check for the latter with gimple_call_builtin_p. Do not handle BUILT_IN_STPNCPY_CHK which is not a pass through call. * gcc.dg/builtin-object-size-18.c: New test. From-SVN: r255133
Jakub Jelinek committed -
From-SVN: r255132
Kirill Yukhin committed -
From-SVN: r255131
Kirill Yukhin committed -
From-SVN: r255130
GCC Administrator committed -
* libsupc++/new (launder): Add nodiscard attribute. * testsuite/18_support/launder/nodiscard.cc: New test. From-SVN: r255127
Jonathan Wakely committed
-
- 23 Nov, 2017 26 commits
-
-
2017-11-24 Christophe Lyon <christophe.lyon@linaro.org> * config/arm/arm_neon.h: Fix pragma GCC push_options before vdot_u32. From-SVN: r255126
Christophe Lyon committed -
PR ada/83091 * gcc-interface/decl.c (gnat_to_gnu_entity): Do not build a variant type for the implementation type of a packed array. From-SVN: r255125
Eric Botcazou committed -
* include/bits/fs_path.h (path::empty): Add nodiscard attribute. * include/bits/range_access.h (empty): Likewise. * include/std/string_view (basic_string_view::empty): Likewise. * testsuite/21_strings/basic_string_view/capacity/empty_neg.cc: New test. * testsuite/24_iterators/range_access_cpp17_neg.cc: New test. * testsuite/27_io/filesystem/path/query/empty_neg.cc: New test. From-SVN: r255124
Jonathan Wakely committed -
PR libstdc++/83134 * include/std/type_traits (__not_): Explicitly convert to bool. * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error. * testsuite/20_util/logical_traits/83134.cc: New test. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust dg-error. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise. From-SVN: r255122
Jonathan Wakely committed -
gcc/ config/i386/avx512vbmi2intrin.h (_mm512_mask_expand_epi8, _mm512_maskz_expand_epi8, _mm512_mask_expandloadu_epi8, _mm512_maskz_expandloadu_epi8, _mm512_mask_expand_epi16, _mm512_maskz_expand_epi16, _mm512_mask_expandloadu_epi16, _mm512_maskz_expandloadu_epi16): New intrinsics. config/i386/avx512vbmi2vlintrin.h (_mm_mask_expand_epi8, _mm_maskz_expand_epi8, _mm_mask_expandloadu_epi8, _mm_maskz_expandloadu_epi8, _mm_mask_expand_epi16, _mm_maskz_expand_epi16, _mm_mask_expandloadu_epi16, _mm_maskz_expandloadu_epi16, _mm256_mask_expand_epi16, _mm256_maskz_expand_epi16, _mm256_mask_expandloadu_epi16, _mm256_maskz_expandloadu_epi16, _mm256_mask_expand_epi8, _mm256_maskz_expand_epi8, _mm256_mask_expandloadu_epi8, _mm256_maskz_expandloadu_epi8): New intrinsics. config/i386/i386-builtin-types.def (V64QI_FTYPE_PCV64QI_V64QI_UDI, V32HI_FTYPE_PCV32HI_V32HI_USI, V32QI_FTYPE_PCV32QI_V32QI_USI, V16HI_FTYPE_PCV16HI_V16HI_UHI, V16QI_FTYPE_PCV16QI_V16QI_UHI, V8HI_FTYPE_PCV8HI_V8HI_UQI): New types. config/i386/i386.c (ix86_expand_special_args_builtin): Use new types. config/i386/sse.md (VI248_VLBW): New iterator. (expand<mode>_mask, expand<mode>_maskz): New patterns. gcc/testsuite/ gcc.target/i386/avx512f-vpexpandb-1.c: New test. gcc.target/i386/avx512f-vpexpandb-2.c: Ditto. gcc.target/i386/avx512f-vpexpandw-1.c: Ditto. gcc.target/i386/avx512f-vpexpandw-2.c: Ditto. gcc.target/i386/avx512vl-vpexpandb-1.c: Ditto. gcc.target/i386/avx512vl-vpexpandb-2.c: Ditto. gcc.target/i386/avx512vl-vpexpandw-1.c: Ditto. gcc.target/i386/avx512vl-vpexpandw-2.c: Ditto. From-SVN: r255121
Julia Koval committed -
gcc/ config.gcc (avx512vbmi2intrin.h, avx512vbmi2vlintrin): New headers. config/i386/avx512vbmi2intrin.h (_mm512_mask_compress_epi8, _mm512_maskz_compress_epi8, _mm512_mask_compressstoreu_epi8, _mm512_mask_compress_epi16, _mm512_maskz_compress_epi16, _mm512_mask_compressstoreu_epi16): New. config/i386/avx512vbmi2vlintrin.h (_mm_mask_compress_epi8, _mm_maskz_compress_epi8, _mm256_mask_compressstoreu_epi16, _mm_mask_compress_epi16, _mm_maskz_compress_epi16, _mm256_mask_compress_epi16, _mm256_maskz_compress_epi16, _mm_mask_compressstoreu_epi8, _mm_mask_compressstoreu_epi16, _mm256_mask_compress_epi8, _mm256_maskz_compress_epi8, _mm256_mask_compressstoreu_epi8): New. config/i386/i386-builtin-types.def (VOID_FTYPE_PV64QI_V64QI_UDI, VOID_FTYPE_PV32HI_V32HI_USI, VOID_FTYPE_PV32QI_V32QI_USI, VOID_FTYPE_PV16QI_V16QI_UHI, VOID_FTYPE_PV16HI_V16HI_UHI, VOID_FTYPE_PV8HI_V8HI_UQI): New types. config/i386/i386-builtin.def (__builtin_ia32_compressqi512_mask, __builtin_ia32_compresshi512_mask, __builtin_ia32_compressqi256_mask, __builtin_ia32_compressqi128_mask, __builtin_ia32_compresshi256_mask, __builtin_ia32_compresshi128_mask, __builtin_ia32_compressstoreuqi512_mask, __builtin_ia32_compressstoreuhi512_mask, __builtin_ia32_compressstoreuqi256_mask, __builtin_ia32_compressstoreuqi128_mask, __builtin_ia32_compressstoreuhi256_mask, __builtin_ia32_compressstoreuhi128_mask): New builtins. config/i386/i386.c (ix86_init_mmx_sse_builtins): Create special args array for flags2. (ix86_expand_special_args_builtin): Handle new types. (s4fma_expand): Handle new builtin array. config/i386/immintrin.h: Include new headers. config/i386/sse.md (VI12_AVX512VLBW): New iterator. (compress<mode>_mask, compressstore<mode>_mask): New patterns. gcc/testsuite/ gcc.target/i386/avx512-check.h: Handle AVX512VBMI2 bit. gcc.target/i386/avx512f-vpcompressb-1.c: New test. gcc.target/i386/avx512f-vpcompressb-2.c: Ditto. gcc.target/i386/avx512f-vpcompressw-1.c: Ditto. gcc.target/i386/avx512f-vpcompressw-2.c: Ditto. gcc.target/i386/avx512vl-vpcompressb-1.c: Ditto. gcc.target/i386/avx512vl-vpcompressb-2.c: Ditto. gcc.target/i386/avx512vl-vpcompressw-1.c: Ditto. gcc.target/i386/avx512vl-vpcompressw-2.c: Ditto. gcc.target/i386/i386.exp (check_effective_target_avx512vbmi2): New. From-SVN: r255119
Julia Koval committed -
* 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
Jakub Jelinek committed -
parser.c (cp_parser_omp_declare): Change return type to bool from void, 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
Jakub Jelinek committed -
* 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
Jakub Jelinek committed -
PR fortran/81841 * parse.c (parse_spec): Allow ST_OMP_THREADPRIVATE inside of BLOCK DATA. * libgomp.fortran/pr81841.f90: New test. From-SVN: r255115
Jakub Jelinek committed -
* 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
Jakub Jelinek committed -
2017-11-23 Marc Glisse <marc.glisse@inria.fr> * match.pd (ptr-0): New transformation. From-SVN: r255113
Marc Glisse committed -
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
Charles Baylis committed -
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
Charles Baylis committed -
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
Thomas Koenig committed -
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
Mark Wielaard committed -
* 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
Eric Botcazou committed -
* config/i386/i386.h (TARGET_PREFER_AVX256): Also enable when TARGET_PREFER_AVX128 is set. From-SVN: r255105
Sergey Shalnov committed -
* 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
Jan Hubicka committed -
* 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
Jan Hubicka committed -
* cgraphclones.c (cgraph_node::create_clone): Fix updating of profile when inlining. From-SVN: r255102
Jan Hubicka committed -
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
Tom de Vries committed -
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
Tom de Vries committed -
2017-11-23 Tom de Vries <tom@codesourcery.com> * class.c (CLASS_TABLE_HASH): Wrap in "do {} while (0)". From-SVN: r255099
Tom de Vries committed -
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
Tom de Vries committed -
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
Oleg Endo committed
-