1. 24 Nov, 2017 14 commits
  2. 23 Nov, 2017 26 commits
    • [ARM] Fix Dot Product NEON intrinsics · 117e6b50
      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
    • re PR ada/83091 (ICE with -g in arm-eabi compilation) · 773076a5
      	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
    • Add [[nodiscard]] attribute to C++17 components · d69f1ec7
      	* 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 Ensure std::__not_ converts B::value to bool · 4b9840f2
      	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
    • Enable VBMI2 support [3/7] · de860379
      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
    • Enable VBMI2 support [2/7] · 11cca3ca
      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
    • rs6000.c (rs6000_gimple_fold_builtin): Formatting fixes. · cd761692
      	* 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… · 9c378aa9
      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. · 41521dee
      	* 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
    • re PR fortran/81841 (THREADPRIVATE (OpenMP) wrongly rejected in BLOCK DATA) · 3b575376
      	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
    • pr65240-1.C: Add -Wno-return-type to dg-options. · 11aa5637
      	* 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
    • Simplify ptr - 0 · d43177ad
      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. · 612ea540
      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
    • [ARM] Refactor costs calculation for MEM. · c138eb5c
      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
    • re PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments) · 207180e1
      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
    • Fix .debug_rnglists generation with -gdwarf-5 -gsplit-dwarf. · 3d4b2e49
      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
    • generic.texi (ANNOTATE_EXPR): Document 3rd operand. · ac9effed
      	* 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
    • i386.h (TARGET_PREFER_AVX256): Also enable when TARGET_PREFER_AVX128 is set. · 02a70367
      	* 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. · 7349698e
      	* 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. · 0009a6c3
      
      	* 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. · 8f58dbd1
      	* cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
      	when inlining.
      
      From-SVN: r255102
      Jan Hubicka committed
    • [libgccjit] Wrap RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE in JIT_{BEGIN,END}_STMT. · 120e92fc
      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
    • [sh] Wrap ASM_OUTPUT_ADDR_VEC_ELT in do {} while (0) · 356db292
      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
    • [libobjc] Wrap CLASS_TABLE_HASH in do {} while (0) · 7f339ecb
      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
    • [ft32] Remove semicolon after ASM_OUTPUT_ADDR_VEC_ELT · 77abf71f
      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
    • re PR target/83111 ([sh] stack smashing detected in gen_udivsi3) · e7434de8
      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